【发布时间】:2014-06-16 23:40:41
【问题描述】:
目前我正在尝试编写一个程序,该程序接受来自用户的自定义命令和参数并执行它。
我正在尝试使用可以同时传入命令参数和环境的 execvpe。
但是,在我的情况下,我无法弄清楚调用 execvpe 的正确方法是什么。
例如这个命令输入:ps aux
我不想构建命令字符串,因为我需要小心转义引号和分号(即:JSON 字符串),理想情况下只是将其作为数组中的一个 arg 传递。
我看到我可以直接在 bash 中运行它的唯一方法是这样的:
/bin/sh -c "ps \$0" aux
但是,我尝试将其转换为 execvpe:
char * argv[] = { "sh", "-c", "\"ps \\$0\"", "aux", NULL };
execve("/bin/sh", (char **)argv, NULL);
但是这给了我一个错误:
aux: ps $0: command not found
用 execvpe 制定这个的正确方法是什么?
【问题讨论】: