我正在使用execl编写程序来执行我的正在测试的exe文件,它运行良好,并在Linux CLI中显示输出。但是我不知道如何将execl更改为execv,尽管我知道两个系统调用都会给出相同的值。我对execv系统调用的array参数感到困惑
这是我的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);
发送到
char(*)[]
的execv
将作为/bin/ls
(在argv
中)传递给int main(int argc, char **argv)
。关于c - 如何在Linux中使用execv系统调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32142164/