Я хочу загрузить новую программу с помощью fork и exec и передать аргументы новой программе. Но я потерпел неудачу.execvp не передал аргументы вызываемой программе
//fork_exec.c
int main()
{
char *args[] = {"/home"};
pid_t pid = fork();
switch(pid)
{
case -1:
return;
case 0://child
execvp("ls",args);
_exit(1);
default://parent
return;
}
}
Скомпилировать файл fork_exec.c, затем получить файл a.out. Тогда я типа
./a.out
в terminate.I предположил, что список файлов в/дома будет отображаться на экране. Но показанные файлы war fork_exec.c и a.out на самом деле. Итак, я думаю, что аргументы не были успешно переданы в программу ls. Пожалуйста, скажите мне, что случилось и почему. Спасибо.
Пожалуйста, внимательно прочитайте страницу руководства для ['execvp'] (http://linux.die.net/man/3/execvp), в частности требования к массиву. –
Из man-страницы 'execvp':« Массив указателей должен быть прерван указателем NULL ». Вы пытаетесь использовать« char * args [] = {«ls», «/ home», NULL}; '? –