有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

节点。js:如何写入javachildprocessstdin

我写了一个节点。js服务器,可以从webinterface生成java子进程,并向该接口显示jar的标准输出。现在我需要通过stdin向jar发送一些命令,这就是我的问题:

我正在生成服务器:

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

正在尝试发送一些命令:

jar.stdin('stop\n');

但它什么都没用。在其他孩子的过程中,它是这样工作的,但现在我不知道如何做到这一点。有人有主意吗

伙计们


共 (1) 个答案

  1. # 1 楼答案

    你的jar对象是一个ChildProcess object,它有三个streamsstdinstdoutstderr。它们不是函数,而是可以读取(stdout和stderr)和写入(stdin)的流

    下面是一个例子:

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

    它会将一些数据写入子进程的标准输入,并将其输出传输到节点进程的标准输出(即控制台)

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

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