Java进程通知节点事件循环

时间:2015-02-01 08:31:25

标签: java node.js

如果我在Java jar文件中包含一些Java代码,并且我的node.js进程启动了jar文件,那么在Java进程完成后如何通知node.js?

1 个答案:

答案 0 :(得分:1)

当子进程退出时,child对象会发出exit event


  

...但[输出]将写在javaland的某个地方,而不是nodeland,我如何才能最好地将结果写入节点进程?   
...   
...我不明白你如何将java进程(例如System.out)的输出绑定到Node.js

在操作系统级别,所有进程都有三个字符流:stdin,stdout和stderr。 (" std" ="标准"。)当进程生成子进程时,它可以写入子进程的stdin(发送输入)并从子进程中读取#39; s stdout和stderr(接收其输出)。这是进程间通信的最基本形式,而且非常强大。当您将一个命令行程序的结果传输到另一个(或文件)时,它的工作方式相同。

要读取Java程序写入System.outSystem.err的输出,您需要读取Node子对象流stdoutstderr

假设您已经催生了您的子进程并将其保存在变量ch中。以下是您阅读stdout的方式,并在流程结束时收到通知:

ch.stdout.on('data', function (data) {
    var buff = new Buffer(data);
    console.log(buff.toString('utf8')); // Or whatever encoding you're using for output
});

ch.on('exit', function (code) {
    console.log('Child process exited with code ' + code);
});