Node.js:如何写入java-childprocess-stdin

时间:2013-10-31 13:49:37

标签: java node.js stdin bukkit child-process

我编写了一个node.js-server,它可以从web接口生成一个java子进程,并将jar的stdout显示给接口。现在我需要通过stdin将一些命令发送到jar,这就是我的问题:

我正在催生服务器:

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

尝试发送一些命令:

jar.stdin('stop\n');

但它什么都不做。在其他Childprocesses中它的工作方式如下,但现在我不知道如何做到这一点。有人有想法吗?

Thx Guys!

1 个答案:

答案 0 :(得分:4)

您的jar对象是ChildProcess object,其中包含三个streamsstdinstdoutstderr。它们不是函数,而是可以从(stdout和stderr)读取并写入(stdin)的流。

以下是一个例子:

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

将一些数据写入子进程的标准输入,并将其输出传递给Node进程的标准输出(即控制台)。

请注意,write()调用是异步的:在您调用write()的时间与实际写入流程输入的时间之间可能会有一个小的延迟。

有关流的概述,您可以阅读The Stream Handbook