目前我正在尝试编写一个程序,该程序接受用户的自定义命令和参数并执行它。
我正在尝试使用execvpe,可以同时传递命令args和env。
然而,我不知道在我的情况下调用execvpe的正确方法是什么。
例如这个命令输入:ps aux
我不想建立一个命令字符串,然后我需要小心转义引号和分号(即:JSON字符串),理想情况下只是传递作为数组中的一个参数。
我看到我可以在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来表述这个正确的方法是什么?
您在C代码中所做的相当于:
$ bash -c '"ps $0"' aux
aux: ps $0: command not found
你不能反斜杠双引号和美元符号。试试这个:{ "sh", "-c", "ps $0", "aux", NULL }
注: