Подтвердить что ты не робот

Убить все child_process, когда процесс node убит

Как я могу убедиться, что все child_process будут убиты, когда родительский процесс будет убит. У меня есть что-то вроде ниже.

Даже когда процесс node убит, я вижу, что FFMPEG продолжает работать, и вызывается out.avi. Как остановить работу FFMPEG после завершения процесса node.

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

child_process.exec(args , function(err, stdout,stderr){});
4b9b3361

Ответ 1

Вам нужно прослушать событие выхода процесса и затем убить дочерние процессы. Это должно сработать для вас:

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

Ответ 2

как использовать событие exit, поэтому, когда основной процесс вот-вот выйдет, вы можете убить child_process

process.on('exit', function() {
  console.log('process is about to exit, kill ffmpeg');
  child_process.kill();
});