我编写了一个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!
答案 0 :(得分:4)
您的jar
对象是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。