我想使用 boost-process 从命令中读取标准输出:
std::string command = "cat /tmp/my_file";
namespace bp = boost::process;
bp::ipstream is;
bp::child c(command, bp::std_out > is);
std::string line;
int no_lines = 0;
while (c.running() && std::getline(is, line) && !line.empty()) {
++no_lines;
}
c.wait();
std::cout << "line count: " << no_lines << "\n";
这几乎与 boost-process教程相同。
对于测试,“命令”只是转储一个包含 10000 行的文本文件。
问题是我的代码没有读取命令的所有输出(对于测试用例,它只读取大约 9700 行)。
我究竟做错了什么?
似乎子进程在读取所有标准输出之前就终止了。