如果我在Java jar文件中包含一些Java代码,并且我的node.js进程启动了jar文件,那么在Java进程完成后如何通知node.js?
答案 0 :(得分:1)
当子进程退出时,child
对象会发出exit
event。
...但[输出]将写在javaland的某个地方,而不是nodeland,我如何才能最好地将结果写入节点进程?
...
...我不明白你如何将java进程(例如System.out)的输出绑定到Node.js
在操作系统级别,所有进程都有三个字符流:stdin,stdout和stderr。 (" std" ="标准"。)当进程生成子进程时,它可以写入子进程的stdin(发送输入)并从子进程中读取#39; s stdout和stderr(接收其输出)。这是进程间通信的最基本形式,而且非常强大。当您将一个命令行程序的结果传输到另一个(或文件)时,它的工作方式相同。
要读取Java程序写入System.out
或System.err
的输出,您需要读取Node子对象流stdout
和stderr
。
假设您已经催生了您的子进程并将其保存在变量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);
});