我已经编写了一个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.