完成后的子进程事件

时间:2016-01-20 13:10:17

标签: javascript node.js child-process spawn

有一种方法可以扩展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);
    });

  });

}

1 个答案:

答案 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的经验很少,并且没有看过这个动手,但这就是我解释文档的方式