繁体   English   中英

使用单独的 arguments 调用 `boost::process::system()` 时出现`execve failed: No such file or directory`

[英]Getting `execve failed: No such file or directory` when calling `boost::process::system()` with separate arguments

如果我用一个完整的硬编码命令调用它,它可以工作,但是当我分离 arguments 时,它会抛出:

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),它将被解释为命令行。 这将导致执行 function 搜索 PATH 变量以找到可执行文件。 另一种方法是 exe-args 样式,其中第一个字符串将被解释为文件名(包括路径),并且 rest 作为 arguments 传递给所述 function。

它适用于full path

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM