c execv通过函数传递参数

标签 c execv

我试图理解这段代码:

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/

相关文章:

c - "-Wl,-rpath="怎么可能找不到库呢?

c - 相同的文件,相同的文件大小,但两种不同的内存大小,为什么?

python - _C.cpython-38-x86_64-linux-gnu.so : undefined symbol: _ZN6caffe28TypeMeta21_typeMetaDataInstanceIdEEPKNS_6detail12TypeMetaDataEv

c - 如何在 C 中读取通过 stdin 传递的文件

linux - 执行后,管道缓冲区中的内容消失

c++ - 如何快速检测mysql服务器宕机状态

无法使用 execv() 执行程序

python - 如何使用 os.execv() 在 python 中继承 stdin 和 stdout

c - 如何将 execlp 更改为 execv 并运行其他命令然后只是 'ls'