c execv通过函数

时间:2017-08-01 17:44:50

标签: c execv

我正在尝试理解这段代码:

char * pl[] = {"test.sh", NULL};
execv("./test.sh", pl);

这将从c程序执行我的脚本,但这不会:

execv("./test.sh", ["test.sh", NULL]);

这会发出错误消息:

  

错误:在'['标记

之前的预期表达式

这也不起作用:

execv("./test.sh", (char *) ["test.sh", NULL]);

同样的错误......

这里发生了什么?

我显然误解了char * []声明类型。我应该能够投射阵列吗?我可以把它变成一行代码吗?

我不理解{},我如何将此位传递给此代码段的最终目标函数?

1 个答案:

答案 0 :(得分:2)

您可以使用复合文字:

execv("./test.sh", (char*[]){"test.sh", NULL});

这仅适用于C99及更高版本。