我需要执行一个程序并在c ++中检索它的stdout输出。我希望我的代码也是跨平台的。
最近我发现了针对您所有跨平台需求的Boost c ++库的精彩世界,我想我会去boost.org并阅读Boost.Process的文档。令我惊讶的是,它不存在!然后我开始弄清楚Boost给他们的跨平台库启动外部流程的名称,但到目前为止还没有找到它。
Google搜索将我带到Julio M. Merino Vidal的Boost.Process,这似乎是我正在寻找的非官方Boost图书馆。奇怪的是,我似乎无法在该网站上找到下载链接。似乎该项目最近没有任何进展。
我终于能够在external site上找到Vidal的Boost.Process的下载链接,并且现在将使用它,但是我非常惊讶于我必须付出的努力一个跨平台的c ++库,用于与外部进程交互。
那么,为什么没有正式的Boost.Process?这似乎是一个非常有价值的补充。或者我完全忽视了这里明显的解决方案?您是否可以建议其他跨平台库来管理外部流程的简单启动和交互?
答案 0 :(得分:59)
Boost.Process是accepted for inclusion into Boost on November 9, 2016;和has been included in the 1.64于2017年4月19日发布.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
您可以在网上找到该库的几个旧版本。它们或多或少都不相容:
下载:http://www.highscore.de/boost/process0.5/process.zip
手册:http://www.highscore.de/boost/process0.5/index.html
下载:http://www.highscore.de/boost/gsoc2010/process.zip
手册:http://www.highscore.de/boost/gsoc2010/
下载:http://www.highscore.de/boost/process.zip
manual1:http://www.highscore.de/boost/process/
manual2:http://www.highscore.de/cpp/process/
我认为它与http://svn.boost.org/svn/boost/sandbox/process/boost/
中的相同下载:https://github.com/boost-vault/Process
下载:http://www.netbsd.org/~jmmv/process.zip
手册:http://www.netbsd.org/~jmmv/process/
还有其他版本看起来像分支:https://github.com/JeffFlinn/boost-process和https://github.com/boost-vault/Process。
有关项目的部分历史记录,请查看http://www.highscore.de/cpp/process/#introduction
答案 1 :(得分:30)
Julio M. Merino Vidal,我相信,原作者,在this 2007 post写道,他没有时间完成它。
Boris Schaeling接管了开发。这是您在http://www.highscore.de/boost/process/找到的版本。根据这个post,他仍在积极开发它。
还有另一个版本,Ilya Sokolov。
对于您的其他问题:
您是否可以建议其他跨平台库来管理外部流程的简单启动和交互?
您可以查看列出替代品的this wiki page。
根据您的需要,popen()也可以完成这项工作。
答案 2 :(得分:8)
Boost Process是今年Google Summer of Code项目之一。 GSOC 2010 Boost Process网站为http://www.highscore.de/boost/gsoc2010/。
该库仍然是非官方的,但它的开发人员认为它足够稳定request formal review。
答案 3 :(得分:8)
截至2012年8月18日,更新版本的Boost.Process(v0.5)已在http://www.highscore.de/boost/process0.5/
发布希望有所帮助, 菲利普
答案 4 :(得分:4)
另一个选项可能是模块化设计的POCO,请参阅Process::launch()
,其中包含Pipes >和错误。
答案 5 :(得分:3)
看起来Boost.Process在sandbox area中,这表明它已被提议包含并且可能仍在继续工作,但尚未被认为是稳定的,有文档记录和/或有用的被列入主要的助推器版本。
答案 6 :(得分:2)
2015年7月,对于Boost正式审核,似乎Boost.Process
已scheduled。
答案 7 :(得分:1)
Boost.Process的部分现在可以在Boost的几个独立库中使用:Boost.Interprocess,Program Options等。
答案 8 :(得分:1)
新的Boost流程目前处于测试阶段,将在Boost 1.64.0中提供。
http://www.boost.org/doc/libs/1_64_0_b2/doc/html/process.html