2009-10-15 16 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。

相關問題