Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用数组中的多个参数在C中构造execl()调用?_C_Arrays_Exec - Fatal编程技术网

如何使用数组中的多个参数在C中构造execl()调用?

如何使用数组中的多个参数在C中构造execl()调用?,c,arrays,exec,C,Arrays,Exec,我在C中有一个名为args[]的字符串数组-现在如何使用此参数列表构造对execl()的正确调用 因此,如果数组包含: {"/bin/ls","ls","-a","-l"} …如何最终构造一个execl()调用,即: execl("/bin/ls","ls","-a","-l",NULL); 我一定是想错了,因为我在网上找不到任何东西,只需谈谈定义可以接受可变数量参数的函数。直接取自“man execl” execv()和execvp()函数提供指向 以null结尾的字符串,表示可用于 新

我在C中有一个名为
args[]
的字符串数组-现在如何使用此参数列表构造对
execl()的正确调用

因此,如果数组包含:

{"/bin/ls","ls","-a","-l"} 
…如何最终构造一个
execl()
调用,即:

execl("/bin/ls","ls","-a","-l",NULL);
我一定是想错了,因为我在网上找不到任何东西,只需谈谈定义可以接受可变数量参数的函数。

直接取自“man execl”

execv()和execvp()函数提供指向 以null结尾的字符串,表示可用于 新计划。按照惯例,第一个论点应该指向 与正在执行的文件关联的文件名。数组 指针必须由空指针终止

编辑: 这是原型

int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);

如果要将数组传递给其中一个,则应使用
execv
而不是
execl

您的数组应以空指针终止,而您的数组当前不是空指针:

{"/bin/ls","ls","-a","-l", NULL} 

首先,确保args[]数组的最后一个元素为空指针,然后调用


execv(args[0],&args[1])

这就是我拥有隧道视野和“使用我所知道的”所得到的。感谢这两个答案。我正要问这个问题,发现了这个:)谢谢。