2011-10-21 58 views
4

你如何與D中的子進程進行分離和通信?是否有一個與D中的子進程分叉和通信的例子?

我想我非常想找http://erdani.com/d/new-stdio/phobos-prerelease/std_process.html#pipeProcess但pipeProcess似乎不在D2中。

我想執行一個子進程,並能夠從其stdout和stderr中讀取,寫入其stdin並接收退出通知和退出代碼。

在D中做這件事的最好方法是什麼?

謝謝,

Chris。

+1

我相信,該文檔被張貼了討論對std.stdio的建議更改,其std.process上的頁面可能是最終將會是新的std.process(因爲提議更改std.stdio的開發人員參與了std.process的重寫),但是Digital Mars的C運行時存在一個錯誤,它使新的std.process在Windows上無法工作(並且它可能會y影響這個,因爲它與管道有關)。儘管如此,它最終會以一種或另一種形式出現在福博斯。 –

+0

謝謝,這很瞭解。我對D的熱情很大程度上取決於如何以跨平臺的方式寫出有用的東西。 – fadedbee

回答

5

最終,這個功能將在火衛一,但現在,這裏的一類我扔在一起:Pastebin link

你使用這樣的:

auto stream = new ProcessStream("ls -a"); 
// read, write, etc. from stream 
2

目前,與您在C. pipe,fork,exec中相同的方式。

不漂亮。