如何使用数组中的多个参数在C中构造execl()调用?
我在C中有一个名为如何使用数组中的多个参数在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结尾的字符串,表示可用于 新
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])代码>这就是我拥有隧道视野和“使用我所知道的”所得到的。感谢这两个答案。我正要问这个问题,发现了这个:)谢谢。