我正在编写一个程序,使用 execl 来执行我正在测试的 exe 文件,它运行良好,并在 Linux CLI 中显示输出。但是我不知道如何将 execl 更改为 execv,尽管我知道这两个系统调用将给出相同的值。我对 execv 系统调用的数组参数感到困惑
这是我的execl示例程序
int main(void)
{
int childpid;
if((childpid = fork()) == -1 )
{
perror("can't fork");
exit(1);
}
else if(childpid == 0)
{
execl("./testing","","",(char *)0);
exit(0);
}
else
{
printf("finish");
exit(0);
}
}
我能知道如何将 execl 更改为 execv 吗?我从网上读到的,我们必须设置我的 exe 文件的文件路径和 array 的参数。需要为数组设置什么类型的参数才能让程序执行测试 exe 文件?
https://support.sas.com/documentation/onlinedoc/sasc/doc/lr2/execv.htm
链接是我想要的吗?但是我从中读到的是,命令是请求列出文件,而不是执行文件。纠正我,我有任何错误
最佳答案
为了看出区别,这里有一行代码执行ls -l -R -a
与
execl(3)
:execl("/bin/ls", "ls", "-l", "-R", "-a", NULL);
与
execv(3)
:char* arr[] = {"ls", "-l", "-R", "-a", NULL}; execv("/bin/ls", arr);
发送到execv
的char(*)[]
会作为argv
传递给/bin/ls
> (在 int main(int argc, char **argv)
)
关于c - 如何在linux中使用execv系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142164/