我想执行以下命令
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
忽略。
如何避免这个问题?
答案 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