当节点进程被终止时,终止所有子进程



如何确保在杀死父进程时杀死所有子进程。我有类似下面的东西。

即使节点进程被终止,我也看到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){});

您需要监听进程退出事件,然后终止子进程。这应该对你有用:

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();
});

您可以监听退出进程事件,因此当主进程即将退出时,您有时间调用ffmpeg子进程上的kill方法

var args = "ffmpeg -i in.avi out.avi"
var ffmpegChildProccess = child_process.exec(args , function(err, stdout,stderr){});
process.on('exit', function() {
  console.log('process is about to exit, kill ffmpeg');
  ffmpegChildProccess.kill();
});

编辑:正如评论所提到的,fakewaffle解决方案是正确的,kill不是在child_process中调用的,而是在执行exec时对子进程的引用中调用的
此外,我删除了"what a about…",因为这是不必要的,无意中我意识到大声朗读时听起来很刺耳。

相关内容

  • 没有找到相关文章

最新更新