我想执行以下命令
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);但是命令不起作用。我做了一个调查,我发现原因是第五论点('{"interface": "lan"}')包含一个特殊的字符',似乎被execvp忽略了。
如何避免这个问题?
发布于 2015-09-20 11:03:12
错误的道路..。这个论点是{"interface": "lan"},而不是 '{"interface": "lan"}'。引号只是用于shell,所以它知道里面的空格属于参数,而不是两个参数之间的标尺。ubus再也见不到他们了。
编辑:最好说ubus永远不会看到它们,因为在您的实现中,它是这样做的,这只是ubus的不正确语法。
发布于 2015-09-20 11:04:29
您还没有显示代码,但是等效的execvp调用如下所示:
char *args[] = {
"ubus", "-S", "call", "network.interface", "status", "{\"interface\": \"lan\"}", NULL
};
execvp("ubus", args);https://stackoverflow.com/questions/32678576
复制相似问题