在节点进程被终止时杀死所有child_process

Pha*_*ani 22 cluster-computing child-process node.js

如何确保在父进程被终止时所有child_process被杀死.我有类似下面的东西.

即使节点进程被终止,我也看到FFMPEG继续运行并且生成了out.avi.如何在节点进程退出后停止运行FFMPEG.

var args = "ffmpeg -i in.avi out.avi"
child_process.exec(args , function(err, stdout,stderr){});

child_process.exec(args , function(err, stdout,stderr){});
Run Code Online (Sandbox Code Playgroud)

fak*_*fle 28

您需要侦听进程退出事件并然后终止子进程.这应该适合你:

var args = "ffmpeg -i in.avi out.avi"
var a = child_process.exec(args , function(err, stdout,stderr){});

var b = child_process.exec(args , function(err, stdout,stderr){});

process.on('exit', function () {
    a.kill();
    b.kill();
});
Run Code Online (Sandbox Code Playgroud)

  • 如果进程"a"在主进程触发`exit`事件并且`a.kill()`被调用之前完成,会发生什么.难道这不可能*杀死*另一个被重新分配给'a`曾经是同一个PID的进程吗?你怎么防止这种情况? (5认同)