nodejs node cluster node.js cluster-computing child-process

node.js - node - mata a todo el proceso child_process cuando se mata el proceso del nodo



pm2 (2)

Necesitas escuchar el evento exit de proceso y luego matar los procesos secundarios. Esto debería funcionar para usted:

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

¿Cómo me aseguro de que todos los procesos de child_process se eliminen cuando finaliza el proceso padre? Tengo algo como el de abajo.

Incluso cuando el proceso del nodo está inactivo, veo que FFMPEG continúa ejecutándose y se genera el out.avi. ¿Cómo puedo evitar que FFMPEG se ejecute después de que finalice el proceso del nodo?

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


Podría escuchar el evento del proceso de salida, por lo que cuando el proceso principal está a punto de salir, tiene tiempo de llamar al método kill en el proceso hijo ffmpeg

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

Edit : como los comentarios se mencionan y la solución de fakewaffle está bien, kill no se debe llamar en child_process sino en la referencia al proceso hijo que se obtiene al realizar exec.
También elimino el "what a about ..." porque era innecesario y, sin quererlo, me doy cuenta de que estaba sonando duro cuando lo leí en voz alta.