首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >execvp忽略参数

execvp忽略参数
EN

Stack Overflow用户
提问于 2015-09-20 10:58:56
回答 2查看 252关注 0票数 1

我想执行以下命令

代码语言:javascript
复制
ubus -S call network.interface status '{"interface": "lan"}'

在C中使用execvp

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

但是命令不起作用。我做了一个调查,我发现原因是第五论点('{"interface": "lan"}')包含一个特殊的字符',似乎被execvp忽略了。

如何避免这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-20 11:03:12

错误的道路..。这个论点是{"interface": "lan"}而不是 '{"interface": "lan"}'。引号只是用于shell,所以它知道里面的空格属于参数,而不是两个参数之间的标尺。ubus再也见不到他们了。

编辑:最好说ubus永远不会看到它们,因为在您的实现中,它是这样做的,这只是ubus的不正确语法。

票数 3
EN

Stack Overflow用户

发布于 2015-09-20 11:04:29

您还没有显示代码,但是等效的execvp调用如下所示:

代码语言:javascript
复制
char *args[] = {
    "ubus", "-S", "call", "network.interface", "status", "{\"interface\": \"lan\"}", NULL
};
execvp("ubus", args);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32678576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档