如何确保在杀死父进程时杀死所有子进程。我有类似下面的东西。
即使节点进程被终止,我也看到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…",因为这是不必要的,无意中我意识到大声朗读时听起来很刺耳。