我想使用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";
这几乎与提升过程tutorial相同。
为了进行测试,“命令”只是转储包含10000行的文本文件。
问题是我的代码没有从命令的所有输出中读取(对于测试用例,它仅读取9700行)。
我在做什么错了?
在读取所有标准输出之前,子进程似乎正在终止。