2009-10-15 19 views

回答

2

PocoACE有进程类可以做你想做的。请参阅Poco中的Foundation-> Processes-> Process; Ace的Process.h/Process.cpp。如果QT有类似的内容,我不会感到惊讶。

至于如何做到这一点,基本上你包装操作系统的依赖关系和埋葬细节。 Poco和Ace提供对比的常用方法。 Poco倾向于通过为每个平台编写实现对象(xxx_impl)来处理事情,并根据操作系统选择合适的平台。 ACE似乎为代码编写了代码,有时甚至到了疯狂的地步,虽然公平地说,自从我查看代码以来已经很长时间了。

0

ANSI C89 system()存在于两个平台上。很显然的过程取决于它是否可以在平台之间移植。但是你当然不需要提升来做到这一点。

+0

system()只是将一个命令转发给底层的shell。它不允许您读取stdout流,或者将数据发送到stdin流。 – StackedCrooked 2009-10-15 23:51:39

+0

虽然这个问题并不要求stdio重定向。无论如何,这些平台之间的外部工具通常也不会那么便携。 – 2009-10-16 15:12:39

+0

如果您需要使用system(),并且想要重定向stdout或stderr,只需将所有数据都管入一个文本文件中,稍后再读取。 – blwy10 2009-10-16 15:42:29

1

你想要什么样的控制水平?该标准包括system(),它可以执行一个子进程。如果要控制标准输入或标准输出,可以使用popen(尽管MS通常将其称为_popen)。如果你想要比这更精致的东西,你只需要看看其他地方。

3

还有尚未批准的Boost.Process库。我从来没有尝试过,但它可能为你做这项工作。

虽然我已成功使用Poco的Process API。

相关问题