3

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

我正在生成服务器:

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

尝试发送一些命令:

jar.stdin('stop\n');

但它什么也没做。在其他子进程中它是这样工作的,但现在我不知道该怎么做。任何人的想法?

谢谢各位!

4

1 回答 1

5

您的jar对象是ChildProcess 对象,它具有三个stdin、、、。它们不是函数,而是您可以从(stdout 和 stderr)读取并写入(stdin)的流。stdoutstderr

这是一个例子:

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

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

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

有关流的概述,您可以阅读流手册

于 2013-10-31T14:11:01.807 回答