2013-08-16 74 views
17

親プロセスが強制終了されたときにすべてのchild_processが強制終了されるようにするにはどうすればよいですか。 私は以下のようなものを持っています。ノードプロセスが終了したときにすべてのchild_processを終了する

ノードプロセスがkillの場合でも、FFMPEGは実行され続け、out.aviが生成されます。ノードプロセスが終了した後、FFMPEGの実行を停止するにはどうすればよいですか?あなたは、プロセスの終了イベントをリッスンし、子プロセスを殺すために必要なものexitイベントを使用するについて、メインプロセスは終了しようとしているときに、あなたがchild_processを殺すことができる

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

答えて

23

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

child_process.exec(args , function(err, stdout,stderr){}); 
+5

メインプロセスが 'exit'イベントをトリガし、' a.kill() 'が呼び出される前に、プロセス' a'が終了するとどうなりますか?これは、以前は 'a'と同じPIDに再割り当てされた別のプロセスを殺す可能性がありますか?どのようにこれを防ぐのですか? – Sukima

+1

たぶん愚かな質問ですが、私はいつも私のchild_processでkillを呼び出す必要がありますか?メモリに関連するコードにバグがあり、そのようなクレイジーなものが生成されていると思われます。 – superhero

+0

Windowsでは、a.kill()は動作しません。 –

-2

次に。これはあなたのために働くはずです:

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

'child_process'モジュールには' kill'がありません。 – Mitar

+0

http://nodejs.org/api/child_process.html#child_process_child_kill_signal – alfonsodev

+1

これは 'child_process'モジュールではなく、子プロセスオブジェクトです。 – Mitar

関連する問題