Функция .draw()
не делает ничего, о чем вы не говорите. Проще говоря, вы можете запустить много разных событий, а затем вызвать их все с помощью .draw()
. Как и предполагал Zim84, вы можете искать в 2 разных столбцах, но в первом случае вы не сделаете .draw()
, НО вы бы вызвали .draw()
при втором поиске.
Итак .. да, делать что-то вроде
table.column(2).search("male");
table.column(3).search("asia").draw();
будет работать нормально .
Как Jason говорит C, оболочка exec'ed не является интерактивной.
Его решение вынудит оболочку быть интерактивной, если это примет -i
чтобы означать что (и удар делает):
char *shellargv[] = { SHELL, "-i", "-login", ... };
execvp(SHELL, shellargv);
Я хочу добавить, тем не менее, что традиционно оболочка будет действовать как оболочка входа в систему если ARGV[0]
начинается с тире.
char *shellargv[] = {"-"SHELL, "-i", ...};
execvp(SHELL, shellargv);
Обычно, тем не менее, Bash автоматически обнаружит, должен ли он работать в интерактивном режиме или нет. Его отказ к в Вашем случае может быть из-за пропавших без вести /dev/*
узлы.
Оболочка не является интерактивной. Попытайтесь добавить-i к списку аргументов.
Я могу отождествить с желанием сделать это самостоятельно, но если Вы уже не имеете, проверяете тюрьму chroot проект и jailkit для некоторого понижения инструментов для создания оболочки тюрьмы.
К тому времени, когда Ваш пользователь входит в систему, и их оболочка пытается получить этот файл, она работает под их UID. chroot()
системный вызов только применим корнем - необходимо будет быть более умными, чем это.
Кроме того, chrooting к корневому каталогу пользователя сделает их оболочку бесполезной, как (если у них не будет большого количества материала там), у них не будет доступа ни к каким двоичным файлам. Полезные вещи как ls
, например.
Спасибо за Вашу справку, парней,
Я понял это:
Я забыл к setuid ()/setgid (), chroot (), setuid ()/setgid () назад, затем передайте надлежащую среду с помощью execve ()
О, и, если я не передаю аргумента удару, он получит ~/.bashrc
Если я передаю "-l", если получит/etc/profile
Удачи!