我正在编写一个程序,使用execl来执行我的可执行文件进行测试,并且在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文件设置文件路径和数组参数。需要设置什么类型的参数才能要求程序执行测试exe文件的操作?https://support.sas.com/documentation/onlinedoc/sasc/doc/lr2/execv.htm这个链接是否包含我想要的内容?但是从中所读到的,该命令请求列出文件而不是执行文件。如果我有任何错误,请纠正我。
execv
?你实际上想要完成什么任务? - Kevinexecv
需要一个指向char *
数组的单一指针,而execl
接受可变参数列表的char *
。 - tripleeeexecvpe
之外,据我所知,它基本上是“真正”的execve
的别名,其余都只是语法糖。因此,请使用已经可用的那个。 - Brian McFarland