我想在 C++ 中执行一个子进程。我需要它在 Windows 和 Linux 上工作。Boost中有这样的功能吗?这样做的标准方法是什么?
问问题
3634 次
4 回答
3
有尚未批准的 Boost.Process 库。我从未尝试过,但它可能会为你完成这项工作。
不过,我已经成功使用了Poco的 Process API。
于 2009-10-15T23:47:41.847 回答
2
Poco和ACE有 Process 类,可以做你想做的事。参见 Poco 中的 Foundation->Processes->Process;Ace 的 Process.h/Process.cpp。如果QT有类似的东西,我不会感到惊讶。
至于怎么做,基本上你把操作系统依赖包起来,埋没细节。Poco 和 Ace 提供了对比鲜明的常用方法。Poco 倾向于通过为每个平台编写实现对象 (xxx_impl) 来处理事情,并根据操作系统引入适当的对象。ACE 似乎 #ifdef 代码,有时甚至到了疯狂的地步,但公平地说,我已经很久没有看过那个代码了。
于 2009-10-15T23:57:13.517 回答
1
你想要什么级别的控制?标准包括system()
,它可以执行一个子流程。如果你想控制标准输入或标准输出,你可以使用popen
(虽然MS通常叫它_popen
)。如果你想要比这更复杂的东西,你只需要看看别处。
于 2009-10-15T22:29:02.253 回答
0
ANSI C89system()
存在于两个平台上。显然,该过程的作用取决于它是否可以在平台之间移植。但你当然不需要提升来做到这一点。
于 2009-10-15T22:29:00.830 回答