execvp忽略参数'

时间:2015-09-20 10:58:56

标签: c linux execvp

我想执行以下命令

ubus -S call network.interface status '{"interface": "lan"}'
在C中使用execvp

char* arg[] = {"ubus", "-S", "call", "network.interface" , "status", "'{\"interface\": \"lan\"}'", NULL};
execvp(arg[0],arg);

但该命令不起作用。我进行了调查,我发现原因是第5个参数('{"interface": "lan"}')包含一个特殊的字符',它被execvp忽略。

如何避免这个问题?

2 个答案:

答案 0 :(得分:3)

错误的路径..参数显示{"interface": "lan"} '{"interface": "lan"}'。引号仅适用于shell,因此它知道内部的空格属于参数,而不是两个参数之间的分隔符。 ubus永远不会看到它们。

编辑:更好地说ubus 应该永远不会看到它们,因为在您的实现中,它确实存在,并且这只是{}的错误语法{1}}。

答案 1 :(得分:2)

您还没有显示您的代码,但是等效的<form> <input type = "text" id = "input"/> <button id = "button" onclick = "myfunc()">Go</button> </form> 调用看起来像这样:

execvp