使用单独的参数调用"boost::process::system()"时,获取"execv



如果我用一整条硬编码命令调用它,它会工作,但当我分离参数时,它会抛出:

execve失败:没有这样的文件或目录

在此处运行示例:

bp::system("grep -c false /etc/passwd"); // ok
bp::system("grep", "-c", "false", "/etc/passwd"); // fails
bp::system(cmd="grep -c false /etc/passwd"); // ok
bp::system(exe="grep", args={"-c", "false", "/etc/passwd"}); // fails

显然,当使用exe-args style:时,它不会检查PATH

如果是单个字符串(或显式形式bp::cmd(,它将被解释为命令行。这将导致执行函数搜索PATH变量以查找可执行文件。另一种选择是exe args样式,其中第一个字符串将被解释为文件名(包括路径(,其余字符串作为传递给所述函数的参数。

它与full path:一起工作

bp::system("/bin/grep", "-c", "false", "/etc/passwd");

最新更新