2013-10-31 31 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为快速回答。 –