26

親プロセスが強制終了されたときに、すべての 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){});
4

2 に答える 2

-3

exit プロセス イベントをリッスンできるので、メイン プロセスが終了しようとしているときに、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の実行時に取得する子プロセスへの参照で呼び出されます。
また、「なんてこと…」は不要だったので削除し、思わず声に出して読むと耳障りに聞こえることに気づきました。

于 2013-08-16T15:03:27.327 に答える