c execv通过函数传递参数

c execv pass arguments through a function

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

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

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

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

这传递了一条错误消息:

error: expected expression before '[' token

这也不行:

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

同样的错误...

这是怎么回事?

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

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

您可以使用复合文字:

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

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