跨平台方式启动进程并重定向其stdio

问题描述 投票:0回答:2

我想知道是否有一个跨平台(Windows、Linux、BSD)库,我可以用它异步启动一个进程,并为其标准管道提供类似

iostream
的包装器。

我希望它能够知道进程何时终止。

谢谢你。

c++ stdio
2个回答
3
投票

您可以使用 2 个库:

Q流程

您可以使用 Qt 工具包中的 QProcess 类。 更多信息可以在这个 stackoverflow 问题qt 库 上找到。

libexecstream

这个比Qt更轻,并且是跨平台的

其他

  • pstreams 版本 0.17

    如果您只想要一个控制台应用程序,您可以使用旧的基于 popen 的分支(版本 0.17),它使用 Win32 函数 _popen() 和 _pclose(),但这些在 GUI 程序中不起作用(并且可能会毁掉您的程序) PC,如果 Windows 不适合您。)此版本不具备该库的大部分功能,并且不再维护或测试。


0
投票

令我惊讶的是,没有有一个轻量级库可以实现跨平台。所以我决定创建一个库,因为无论如何我都需要该功能。

这里是图书馆 https://github.com/Neko-Box-Coder/System2

它适用于 posixwindows 系统。 (它不使用 Windows 的 popen,所以它也应该在 GUI 应用程序中工作)

它可以从命令发送输入并接收输出

并有阻塞非阻塞版本。

它同时具有仅标头和源版本

© www.soinside.com 2019 - 2024. All rights reserved.