1

我想使用 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 行)。

我究竟做错了什么?

似乎子进程在读取所有标准输出之前就终止了。

4

0 回答 0