如果我用一整条硬编码命令调用它,它会工作,但当我分离参数时,它会抛出:
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");