我试图理解这段代码:
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 及更高版本。
关于c execv通过函数传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45444539/