boost-process相关内容

Boost.Process 在哪里?

我需要执行一个程序并在 C++ 中检索它的 stdout 输出.我也希望我的代码是跨平台的. 最近发现了 Boost c++ 库的奇妙世界,可以满足您所有的跨平台需求,我想我应该去 boost.org 并阅读 Boost.Process 的文档.令我惊讶的是,它不在那里!然后我开始弄清楚 Boost 给他们的跨平台库起什么名字来启动外部进程,但到目前为止还没有找到. 通过 Google ..

Boost ::按ID处理子项

如何在on_exit函数中获取child.id()? bp :: child c(args,ios,bp :: on_exit([&](int e,std :: error_code ec){结果= e;ios.stop();//需要c.id();})); 或者如果孩子正在通过id运行,如何检查其他功能? boost :: process :: child c(data-> id);/ ..
发布时间:2021-04-15 20:53:22 C/C++开发

boost :: process :: child在关闭输入流后不会退出

在下面的示例中,我尝试将一些数据写入子进程,该子进程处理该数据并将其写入文件.关闭流后,父进程将无限期等待子进程完成.我不知所措,不知道如何指示我已经完成了数据写入,并希望子进程停止读取并完成所有操作.根据文档,请终止会发送 SIGKILL ,我认为这不是我想要的. 我想念什么?我检查了这个问题,但我宁愿尝试使实际代码与同步IO优先. #include ..
发布时间:2021-04-15 20:44:44 C/C++开发

找不到boost_process cmake find_package

我正试图将Boost库导入到我的C ++项目中,由于某种原因,它找不到Boost.Process,尽管它找到了其他库. 我的CMakeLists.txt文件: cmake_minimum_required(版本3.9 FATAL_ERROR)设置(PROJECT_NAME“测试资料" CXX)专案($ {PROJECT_NAME})设置(Boost_USE_MULTITHREADED O ..
发布时间:2021-04-15 20:43:22 C/C++开发

启动子过程中的竞争状况导致从管道读取到挂起

我有两个线程分别启动一个子进程.第一个应用程序是运行很长时间的二进制文件.第二个很快退出. 有一个竞争条件,有时会导致失败.下面有一个最低限度的可行代码示例. 它使用Boost Process 0.5,它使用标准的fork/execve/dup2系统.关于Boost Process的工作方式有一些技巧,但总的来说效果很好. 父进程启动了更多的进程,总的来说,它是可行的. 我 ..
发布时间:2020-07-18 20:42:39 服务器开发

关闭boost :: process子的stdin

我正在尝试使用Boost-1.64.0调用一个带有标准输入法的字符串的进程. 当前代码是: bp::opstream inStream ; bp::ipstream outStream; bp::ipstream errStream; bp::child child( command, // the command line bp::shell, b ..
发布时间:2020-07-18 20:41:23 C/C++开发

如何在打印输出后立即检索程序输出?

我有一个boost :: process :: child.关于如何在单个向量中获取所有stdout或stderr的示例很多,但是在这种方法中,您可以一次捕获所有数据.但是,如何在子进程中打印行/字符后立即对其进行检索? 解决方案 文档在这里: 同步IO 异步IO 使用ipstream 最简单的方法: 在Coliru上直播 #include ..
发布时间:2020-07-18 20:41:16 其他开发

无法从Boost子进程获取分段故障退出代码

当子进程由于分段违规而被杀死或者除数为零或任何其他终止信号时,我试图获取子进程的退出代码(使用boost :: process和boost :: asio).退出代码和错误代码始终返回0并成功. 我正在使用g ++ 4.8.5和boost 1.66在CentOS 7上运行它 如果我在子进程中运行相同的代码,而该子进程仅返回一个非零的退出代码,则它会成功返回该退出代码. #incl ..
发布时间:2020-07-18 20:41:14 其他开发

使用BOOST进程在单独的线程中读取子进程标准输出

我有一个主程序,该程序使用boost进程库来生成可打印的子进程 Hello World ! 每5秒在其标准输出上 . 我想在子进程的标准输出中读取/监视子进程的标准输出,并在主程序中执行其他操作. 我已经尝试了boost asynchronous IO的示例(我们是否需要在单独的线程中读取childs stdout?有人可以提供一个示例,在该示例中主程序可以同时执行其他操作,而 ..
发布时间:2020-07-18 20:40:56 C/C++开发

Boost :: process输出空白行

我正在开发一个应用程序,需要根据用户输入启动和停止各种不同的可执行文件.我希望我的“核心"程序在这些可执行文件运行时能正常运行,即不要等待它们在理论上是无限的终止.除此之外,我还需要能够接收std_out并将std_in发送到这些可执行文件. 目前,我已经建立了一个具有流程管理器类的地方: class ProcessManager { private: std::vector ..
发布时间:2020-07-18 20:39:43 C/C++开发

信号阻塞导致升压过程不起作用

在下面的代码中,类Process可以在异步模式下使用boost process运行一个进程,如果超时则可以终止该进程.现在,为了关闭它,我阻塞了所有线程中的所有信号,并创建了一个特定的线程signal_thread来处理信号.在执行此操作时,程序将停止工作.我想这可能是因为父进程无法再接收信号SIGCHLD并知道子进程已完成执行. #include #include ..
发布时间:2020-07-07 02:56:40 C/C++开发