我想通过fork和exec加载一个新程序,并将args传递给新程序。 但我失败了。
//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的
。我建议在屏幕上显示/ home中的文件列表。 但是显示的文件实际上是对fork_exec.c和a.out进行了战争。 所以我猜args没有成功传递给ls程序。 请有人告诉我发生了什么以及为什么。 感谢。
答案 0 :(得分:4)
int main()
{
char * args[] = {"ls","/home/",NULL};
pid_t pid = fork();
switch(pid)
{
case -1:
return;
case 0://child
execvp(args[0],args);
_exit(1);
default://parent
return;
}
}
这很有效。试试并阅读其MAN页面。