57

我需要执行一个程序并用 C++ 检索它的标准输出。我也希望我的代码是跨平台的。

最近发现了 Boost c++ 库可以满足您所有跨平台需求的美妙世界,我想我应该去 boost.org 并阅读 Boost.Process 的文档。令我惊讶的是,它不存在!然后我开始弄清楚 Boost 给他们的跨平台库起什么名字来启动外部进程,但到目前为止还没有找到它。

Google 搜索将我带到 Julio M. Merino Vidal 的Boost.Process,这似乎是我正在寻找的非官方 Boost 库。奇怪的是,我似乎在那个网站上找不到下载链接。似乎该项目最近也没有任何进展。

我终于能够在外部站点上找到 Vidal 的 Boost.Process 的下载链接,并且现在将使用它,但我对我必须付出的努力才能获得跨平台 c++ 库以与外部进程交互。

那么,为什么没有官方的Boost.Process呢?看起来这将是一个非常有价值的补充。还是我完全忽略了这里明显的解决方案?您能否建议其他跨平台库来管理外部流程的简单启动和交互?

4

9 回答 9

62

Boost.Process 于2016 年 11 月 9 日被接受纳入 Boost;并已包含在2017 年 4 月 19 日发布的 1.64 中。Boost.Process 现在是官方的 Boost 库!

它的文档可以在这里找到:http: //www.boost.org/doc/libs/1_64_0/doc/html/process.html


作为记录,从 2016 年 10 月 27 日到 2016 年 11 月 5 日期间审查的资源可在 GitHub 上找到:

下载:https ://github.com/klemens-morgenstern/boost-process

手册: http: //klemens-morgenstern.github.io/process/index.html


你可以在网上找到这个库的几个旧版本。它们都或多或少不兼容:

  • 0.5 版(最新,截至 2012 年 12 月 3 日)

下载:http ://www.highscore.de/boost/process0.5/process.zip

手册:http ://www.highscore.de/boost/process0.5/index.html

  • 版本 GSOC2010

下载:http ://www.highscore.de/boost/gsoc2010/process.zip

手册:http ://www.highscore.de/boost/gsoc2010/

  • 0.31 版

下载:http ://www.highscore.de/boost/process.zip

手册 1: http ://www.highscore.de/boost/process/

手册2: http ://www.highscore.de/cpp/process/

我认为它与http://svn.boost.org/svn/boost/sandbox/process/boost/中的相同

  • IS 版本 0.1-0.4

下载:https ://github.com/boost-vault/Process

  • 版本 0?

下载: http: //www.netbsd.org/~jmmv/process.zip

手册: http: //www.netbsd.org/~jmmv/process/

还有其他版本看起来像分支:https://github.com/JeffFlinn/boost-processhttps://github.com/boost-vault/Process

有关该项目的部分历史,请查看http://www.highscore.de/cpp/process/#introduction

于 2012-09-08T03:49:34.537 回答
30

我相信原作者 Julio M. Merino Vidal 在2007 年的这篇文章中写道,他没有时间完成它。

开发由 Boris Schaeling 接管。这是您在http://www.highscore.de/boost/process/找到的版本。根据这篇文章,他仍在积极开发它。

还有另一个版本,由Ilya Sokolov 编写

对于您的其他问题:

您能否建议其他跨平台库来管理外部流程的简单启动和交互?

您可以查看此 wiki 页面列出替代方案。

根据您的需要, popen() 也可以完成这项工作。

于 2009-11-05T22:12:23.917 回答
8

Boost Process 是今年 Google Summer of Code 项目之一。GSOC 2010 Boost Process 网站是http://www.highscore.de/boost/gsoc2010/

该库仍然是非官方的,但它的开发人员认为它足够稳定,可以要求正式审查

于 2010-11-26T01:57:36.067 回答
8

截至 2012 年 8 月 18 日,更新版本的 Boost.Process (v0.5) 已在http://www.highscore.de/boost/process0.5/上发布

希望有帮助,菲利普

于 2012-08-27T22:36:57.803 回答
4

另一种选择可能是模块化设计的POCO,看看Process::launch()它有一个重载,需要管道进行输入输出错误

于 2009-11-05T23:01:09.510 回答
3

看起来 Boost.Process 在沙箱区域中,这表明它已被提议包含并且可能仍在进行中,但尚未被认为稳定、记录和/或有用到足以包含在主程序中促进释放。

于 2009-11-05T21:53:35.577 回答
2

对于 2015 年 7 月,似乎Boost.Process安排再次进行 Boost 正式审查。

于 2015-07-07T19:40:04.203 回答
1

Boost.Process 的一部分现在在 Boost 的几个独立库中可用:Boost.Interprocess、Program Options 等。

于 2009-11-05T21:52:53.383 回答
1

新的 Boost Process 现在处于测试阶段,将在 Boost 1.64.0 中提供。

http://www.boost.org/doc/libs/1_64_0_b2/doc/html/process.html

于 2017-04-19T13:07:58.340 回答