boost::process::system 可以支持用分号分隔的 bash 命令吗?
can boost::process::system support bash commands separated by a semicolon?
代码:
#include <boost/system/process.hpp>
int main() {
boost::process::system bp("echo foo; echo bar");
}
输出:
富;回声栏
期望的输出:
富
酒吧
我收到一个字符串,其中包含 1:MANY 到 运行 的命令,用分号分隔;正如 运行 在 shell 终端中一样。有没有办法告诉 boost::process 这样解释字符串命令?
是的,我会使用明确的 bash:
#include <boost/process.hpp>
namespace bp = boost::process;
int main() {
bp::child c(
bp::search_path("bash"),
std::vector<std::string>{
"-c", "echo foo; for a in {1..10}; do echo \"bar $a\"; done"});
c.wait();
}
版画
foo
bar 1
bar 2
bar 3
bar 4
bar 5
bar 6
bar 7
bar 8
bar 9
bar 10
代码:
#include <boost/system/process.hpp>
int main() {
boost::process::system bp("echo foo; echo bar");
}
输出:
富;回声栏
期望的输出:
富
酒吧
我收到一个字符串,其中包含 1:MANY 到 运行 的命令,用分号分隔;正如 运行 在 shell 终端中一样。有没有办法告诉 boost::process 这样解释字符串命令?
是的,我会使用明确的 bash:
#include <boost/process.hpp>
namespace bp = boost::process;
int main() {
bp::child c(
bp::search_path("bash"),
std::vector<std::string>{
"-c", "echo foo; for a in {1..10}; do echo \"bar $a\"; done"});
c.wait();
}
版画
foo
bar 1
bar 2
bar 3
bar 4
bar 5
bar 6
bar 7
bar 8
bar 9
bar 10