2013-10-31 57 views
2

我已經編寫了一個node.js-server,它可以從web界面產生一個java childprocess,並將jar的stdout顯示到界面。現在我需要在標準輸入到罐子裏發送一些命令和thath是我的問題:Node.js:如何寫入java-childprocess-stdin

我產卵服務器:

jar = cp.spawn('java', ['-Xmx1024M', '-jar', dir+'craftbukkit.jar', '-o true','-nojline'], { 
cwd:dir); 

試圖發送一些命令:

jar.stdin('stop\n'); 

但它沒有做任何事情。在其他子進程中,它像這樣工作,但現在我不知道如何做到這一點。任何人的想法?

Thx Guys!

回答

4

jar對象爲ChildProcess object,其中有三個streamsstdinstdoutstderr。它們不是函數,而是可以讀取的流(stdout和stderr)並寫入(stdin)。

下面是一個例子:

jar.stdin.write('stop\n'); 
jar.stdout.pipe(process.stdout); 

這將一些數據寫入到您的子進程的標準輸入,並且管其輸出到您的節點處理(即,控制檯。)的標準輸出。

請注意,write()調用是異步的:調用write()的時間與它真正寫入到過程輸入的時間之間可能存在小的延遲。

有關溪流的概述,您可以閱讀The Stream Handbook

+0

太棒了!爲我工作。 Thx爲快速回答。 –