gpt4 book ai didi

c - execvp 没有将参数传递给被调用的程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:09 25 4
gpt4 key购买 nike

我想通过 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程序。请有人告诉我发生了什么事以及为什么。谢谢。

最佳答案

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 页面。

关于c - execvp 没有将参数传递给被调用的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com