使用提升过程获取 shell 命令的标准输出
Get stdout of a shell command using boost process
我正在尝试在C++中实现一个函数,该函数运行 shell 命令并返回退出代码,stdout
和stderr.
我正在使用Boost process library
std::vector<std::string> read_outline(std::string & file)
{
bp::ipstream is; //reading pipe-stream
bp::child c(bp::search_path("nm"), file, bp::std_out > is);
std::vector<std::string> data;
std::string line;
while (c.running() && std::getline(is, line) && !line.empty())
data.push_back(line);
c.wait();
return data;
}
在上面来自boost网站的例子中,在while循环中检查了条件c.running((。如果进程在到达 while 循环之前完成执行怎么办?在这种情况下,我将无法将子进程的标准输出存储到数据中。Boost的文档还提到了以下内容
[警告] 警告 如果在 nm 退出后尝试读取,管道将导致死锁
因此,似乎对 c.running(( 的检查应该在 while 循环中存在。
如何从程序到达 while 循环之前完成运行的进程获取标准输出(和标准输出(?
我相信等待电话是为了什么。在此之前的任何操作系统中,子进程实际上并没有消失(它只是在不处于运行状态后更改状态(。
相关文章:
- 使用提升过程获取 shell 命令的标准输出
- 如何在 Linux 下执行 shell 命令 unsing QProcess?
- 在 c++ 中从执行的 shell 命令获取返回状态的安全方法是什么?
- 在 QProcess 中执行 shell 命令
- 在结束运行之前获取 c++ 中的 shell 命令输出
- 如何在 Linux 中同时运行多个 shell 命令
- 如何在QT中使用pro文件在重新编译时执行shell命令?
- 如何将Mongo Shell命令转换为Mongocxx语法
- 使用 exec 在 c++ 中执行 shell 命令
- 使用qmake执行shell命令
- 在 pthread 中运行 shell 命令的良好和优化方法是什么?
- C++使用 shell 命令 WINDOWS 的输出定义宏 /D
- 在C++中执行shell命令时强制环境bash
- 从 shell 命令 Linux 读取值
- 在 c++ 中执行 Linux shell 命令,同时隐藏其输出
- 来自C 代码的Shell命令
- 用一些符号分隔shell命令
- 使用 execvp() 执行 shell 命令
- 有没有C++方法来调用 linux shell 命令
- 重复调用 shell 命令,通过管道捕获标准输出