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

chu*_*son 5 c arrays exec

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

所以如果数组包含:

{"/bin/ls","ls","-a","-l"} 
Run Code Online (Sandbox Code Playgroud)

...我怎样才能最终构建一个execl()调用:

execl("/bin/ls","ls","-a","-l",NULL);
Run Code Online (Sandbox Code Playgroud)

我必须考虑这个错误,因为我在网上找不到任何东西,只谈谈定义可以采用可变数量参数的函数.

Chr*_*s H 7

直接来自"man execl"

execv()和execvp()函数提供指向以null结尾的字符串的指针数组,这些字符串表示新程序可用的参数列表.按照惯例,第一个参数应指向与正在执行的文件关联的文件名.指针数组必须由NULL指针终止.

编辑:这是原型.

int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
Run Code Online (Sandbox Code Playgroud)


Ric*_*dle 7

如果你有,你想传递给一个数组exec*家庭,你应该使用execv,而不是execl.

您的数组应该由NULL指针终止,您当前不是:

{"/bin/ls","ls","-a","-l", NULL} 
Run Code Online (Sandbox Code Playgroud)