【问题标题】:Cross-platform way to start a process and redirect its stdio跨平台启动进程并重定向其 stdio 的方式
【发布时间】:2026-01-08 10:00:02
【问题描述】:

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

我希望它能够判断进程何时终止。

谢谢。

【问题讨论】:

    标签: c++ stdio


    【解决方案1】:

    您可以使用 2 个库:

    QProcess

    您可以使用 Qt 工具包中的 QProcess 类。 更多信息请访问this * questionqt library

    libexecstream

    这个library比Qt更轻巧,而且是跨平台的

    其他

    • pstreams 版本 0.17

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

    【讨论】:

    • 感谢您的建议,但由于我还没有在我的项目中使用 Qt,所以我想要更轻量级的东西。
    • 你用过system吗?我认为它是跨平台的。
    • 是的,我目前正在使用system(),但这是一个阻塞调用,AFAIK 不启用输入/输出重定向。
    • 看起来不错,但如果我理解正确,这些都是 POSIX 特定的。我希望它也能在 Win32(没有 Cygwin)上工作。
    • pstreams 常见问题解答说明您可以使用跨平台的libexecstream