文件中包含了一些Java代码,并且我的node.js进程启动了jar文件,那么当Java进程完成时,我该如何通知node.js?
当子进程退出时,child
对象会发出exit
事件。
。但是[输出]将写在javaland的某个地方,而不是nodeland,我如何最好地将结果放入节点进程中?
。
。我不明白你如何将java进程(例如System.out)的输出与Node联系起来.js
在操作系统级别,所有进程都有三个字符流:stdin、stdout 和 stderr。("标准"="标准"。当进程生成子进程时,它可以写入子进程的 stdin(向其发送输入)并从子进程的 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);
});