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

我已经编写了一个node.js服务器,它可以从Web界面生成Java子进程,并向接口显示jar的标准输出.现在我需要通过标准输入发送一些命令到罐子,这就是我的问题:

我生成服务器:

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

尝试发送一些命令:

jar.stdin('stop\n');

但是它什么也没做.在“其他子进程”中,它的工作原理是这样的,但是现在我不知道如何执行此操作.有人有主意吗?

谢谢你们!

解决方法:

您的jarobject是一个ChildProcess object,其中包含三个streams:stdin,stdout,stderr.它们不是函数,而是您可以从(stdout和stderr)读取并写入(stdin)的流.

这是一个例子:

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

它将一些数据写入子进程的标准输入,并将其输出通过管道传递到Node进程的标准输出(即控制台).

请注意,write()调用是异步的:在您调用write()的时间和将其真正写入进程输入的时间之间可能会有一个小的延迟.

有关流的概述,请阅读The Stream Handbook.

上一篇:使用python列表作为使用stdin作为输入的linux命令的输入


下一篇:如何将数据从Python中的不同本地/远程进程流式传输到程序的STDIN中?