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

3
我将为您进行翻译。以下是所需翻译的内容:

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

我正在生成服务器:

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

尝试发送一些命令:

jar.stdin('stop\n');

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

谢谢大家!

1个回答

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

以下是一个示例:

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接