有一种方法可以扩展nodejs的child_process事件 似乎有些时候事件没有被调用,所以我想看看过程是否结束然后开火事件。 例如,我使用spawn并且进程是成功,但是没有调用以下事件,所以当生成过程完成时,我可以通过事件或某事来某种方式跟踪吗?
function childProcessPromise(mtd, cmd, options) {
var child = child_process.spawn(cmd, value, opt);
child.stdout.on('data', function (data) {
console.log('data' + data);
});
child.stderr.on('data', function (data) {
console.log('test: ' + data);
reject(data);
});
child.on('close', function (code) {
console.log("close");
});
child.on('error', function (err) {
console.log(err);
});
});
}
答案 0 :(得分:0)
文档建议您观察的内容可能是正确的:
https://nodejs.org/api/child_process.html#child_process_event_close
事件:'关闭'#
code如果子项自行退出,则为退出代码编号。信号 字符串子进程终止的信号。该 当子进程的stdio流进行时,会发出'close'事件 已经关闭。这与'退出'事件不同,因为 多个进程可能共享相同的stdio流。
由于默认情况下子流与父级共享,因此只要父级打开,流就不会关闭
https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
我对spawn的经验很少,并且没有看过这个动手,但这就是我解释文档的方式