我想在C ++中执行子进程。我需要它在Windows和Linux上工作。 Boost中有这样的功能吗? 这样做的标准方法是什么?
答案 0 :(得分:3)
尚未批准的Boost.Process库。我从来没有尝试过,但它可能会为你做好工作。
我已经成功使用了Poco的Process API。
答案 1 :(得分:2)
Poco和ACE具有可以执行所需操作的Process类。参见基础 - >流程 - > Poco中的流程;用于Ace的Process.h / Process.cpp。如果QT有类似的东西,我不会感到惊讶。
至于如何做,基本上你包装操作系统依赖项并埋葬细节。 Poco和Ace提供了截然不同的常用方法。 Poco倾向于通过为每个平台编写实现对象(xxx_impl)来处理事务,并根据操作系统获取适当的实现对象。 ACE似乎#ifdef代码,有时甚至到了疯狂的程度,虽然公平地说,自从我查看代码以来已经很长时间了。
答案 2 :(得分:1)
您想要什么级别的控制?该标准包括system()
,它可以执行子流程。如果要控制标准输入或标准输出,可以使用popen
(尽管MS通常将其称为_popen
)。如果你想要比这更精细的东西,你只需要去别处寻找。
答案 3 :(得分:0)
两个平台上都存在ANSI C89 system()
。显然, 的过程取决于它是否在平台之间可移植。但你肯定不需要提升它。