问题标签 [boost-process]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1190 浏览

c++ - 在 boost::asio::io_service 下获取 boost::process::child 的退出代码?

以下程序:

输出383

我希望它能够成功完成输出0/bin/ls

我错过了什么?

0 投票
1 回答
745 浏览

c++ - boost::process 异步 IO 示例不起作用?

以下程序:

输出383。我希望它能够输出0

这几乎是来自以下示例的复制和粘贴:

https://www.boost.org/doc/libs/1_71_0/doc/html/boost_process/tutorial.html#boost_process.tutorial.async_io

0 投票
1 回答
410 浏览

c++ - 主程序退出后停止子进程c ++

父母的工作完成后,孩子还活着吗?如果是这样,如果主进程完成,我怎么能杀了他?我使用了boost(boost process,boost asio)。如果可能的话,它应该是MacOsWindowsLinux的解决方案。

0 投票
1 回答
343 浏览

c++ - Boost::Process 管道流和单元测试

我有两个这样的流的来源:

我想知道是否有办法手动写入这个 StdOut 并从 StdIn 读取以进行单元测试?非常感谢!

0 投票
1 回答
1537 浏览

c++ - Boost::process child by id

如何在 on_exit 函数中获取 child.id() ?

或者如果孩子按 id 运行,我如何检查其他功能?

0 投票
2 回答
517 浏览

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

在下面的示例中,我尝试将一些数据写入子进程,该子进程处理数据并将其写入文件。关闭流后,父进程无限期地等待子进程完成。我不知道如何表明我已经完成了数据的写入,并且希望子进程停止阅读并完成它正在做的任何事情。根据文档,调用终止会发送一个SIGKILL我认为不是我想要的。

我错过了什么?我检查了这个问题,但我宁愿先尝试使实际代码与同步 IO 一起工作。

test.py 只是将数据写入文件,如下所示:

0 投票
2 回答
566 浏览

c++ - 使用 boost 创建多个异步运行的子进程

如何生成多个应该异步运行的子进程?我是否使用vector子进程?恐怕下面的代码并没有做我想要完成的事情。也欢迎任何其他关于将参数传递给子进程的不同方式的建议!

0 投票
0 回答
93 浏览

c++ - cmd.exe 关闭时进程在 Windows 上终止?

我有一个程序(我们称之为 prog1.exe)启动另一个程序(我们称之为 prog2.exe):

如果我启动 cmd.exe:

然后运行 ​​prog1.exe:

然后:

  1. prog1.exe 开始运行
  2. prog1.exe 启动 prog2.exe 并且 prog2.exe 开始运行
  3. prog1.exe 成功完成。
  4. prog2.exe 继续运行。

如果我在 prog2.exe 仍在运行时关闭 cmd.exe,它将在 prog2.exe 完成之前终止它。

为什么会这样?为什么 prog1.exe 结尾不会终止 prog2.exe,而 cmd.exe 结尾不会终止 prog2.exe ?

有什么办法可以使关闭 cmd.exe 不会终止 prog2.exe?

0 投票
1 回答
356 浏览

c++ - 如何从 C++ 中长时间运行的子进程获取输出

从 C++ 程序中,我想要:

  • 启动子进程。
  • 等到它发出一行输出。
  • 捕获该行输出,并允许子进程继续运行。

这感觉应该是微不足道的,但我现在已经尝试了两种方法,并且每次都遇到了类似的障碍。首先我用过boost::process,像这样:

第二种方法是只使用popen

在这两种情况下,程序在尝试从管道读取时都会阻塞——分别在getlinefgets中,gdb 显示它卡在低级读取函数中:

对于进一步的上下文,other_executable是一个小型 Python 程序,当它自己运行时会按预期运行(发出输出,保持不变)。它还打开了一个服务器,在这两种情况下我都可以很好地与它通信,所以它肯定会运行(GDB 的 detach 消息进一步证实了这一点,同样如此ps)。

我在这里做错了什么?

0 投票
2 回答
158 浏览

c++ - 启动第二个 Linux 程序并从 C/C++ 退出当前程序?

是否可以从 C 或 C++ Linux 程序(例如/usr/bin/foo)以编程方式启动另一个程序(例如/usr/bin/bar),并foo正常退出并bar继续运行?

system(3)不适合,因为它会阻塞直到其他程序完成。我想要立即返回的东西。

这些程序都是 GUI 程序,但我怀疑这不相关。

Qt 或 boost::process 中有什么可以提供帮助的吗?

有没有我可以运行的通用 Linux 包装程序system(3)来实现这一点?我试过xdg-open了,但我不认为这是正确的。

基本上我希望第二个程序与第一个程序“分离”,并且表现得就像用户通过系统 UI 启动它一样。(例如,在 MacOS 上,有一个open命令,所以它会像system("open /usr/bin/bar")