c - fork() 和 exec() : parameter with space

标签 c escaping exec

我想在 c 中 fork 并执行一个二进制文件。调用二进制文件的参数包含一个空格,见示例代码第一行。如果使用 `plist [2] = conPtr -> conmon_cmd[f];` 执行我的二进制文件,则参数未正确评估。

使用两条注释行会给我带来我想要的结果。我如何转义代码片段第一行中的空格,以便参数只有 一个 plist 参数?

conPtr->conmon_cmd = "clear_config all";
[...]
printf("child process started (PID = %i)\n", pid);  
char *plist[6];
plist [0] = "/tmp/conmon_audinate_controller";
plist [1] = "localhost";
plist [2] = conPtr -> conmon_cmd;
//plist [2] = "clear_config";
//plist [3] = "all";
plist [4] = (char *)NULL;
char *file = "conmon_audinate_controller";
execvp (file,  plist );                        

信息:conmon_audinate_controller 是一个外部可执行文件。在我的 ucLinux 上的 bash 中,调用如下:
/tmp # ./conmon_audinate_controller localhost clear_config all

最佳答案

如果我理解正确的话,您有一个 C 字符串(包含两个单词),您希望将其作为两个 参数传递给 conmon_audinate_controller

exec 系列函数不支持这样的事情 - “clear_config all”将作为单个参数传递。你可以做的是拆分 conPtr->conmon_cmd, using strtok for example , 一分为二并传递两个参数(如注释掉的行)。

关于c - fork() 和 exec() : parameter with space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48684640/

相关文章:

c - 恢复快照后恢复Socket

javascript - 在 javascript 中准确地转义 HTML 实体

ruby-on-rails - Rails 在 url 中使用 '.' 截断参数

xml - 在 XML 中转义双引号字符

PHP Exec Cron Job 返回意外的 EOF

c - 为什么我无法正确打印第 47 个斐波那契数?

c - 有没有办法在运行时间方面优化这个C程序

linux - 调用 shell 脚本时,bash 中的 exec 命令不起作用

计算 C 中的熵

PHP 运行 curl with exec 不工作