È possibile assicurarsi che i processi generati con node.js child_process vengano uccisi quando il genitore viene ucciso?Il processo spawned di node.js resta bloccato se lo script viene ucciso
Ecco uno script di esempio
var spawn = require('child_process').spawn;
var log_tail = spawn("tail", ["-f", "/dev/null"]);
setInterval(function() {
console.log('just chilling');
}, 10000);
Se guardo l'albero processo vedo questo:
$ ps faux
ubuntu 9788 0.0 0.0 73352 1840 ? S 15:04 0:00 | \_ sshd: [email protected]/7
ubuntu 9789 0.0 0.2 25400 6804 pts/7 Ss 15:04 0:00 | \_ -bash
ubuntu 10149 1.0 0.2 655636 8696 pts/7 Sl+ 15:07 0:00 | \_ node test.js
ubuntu 10151 0.0 0.0 7184 608 pts/7 S+ 15:07 0:00 | \_ tail -f /dev/null
Poi più tardi ho bisogno di fermare lo script e non riesco a CTRL-C (per esempio la mia connessione ssh è persa)
$ kill 10149
$ ps faux
ubuntu 10151 0.0 0.0 7184 608 pts/7 S 15:07 0:00 tail -f /dev/null
Si può vedere che il processo di coda è ancora in esecuzione e si è staccato da qualsiasi pa affitto.
Esiste un modo programmatico per uccidere un processo generato se lo spawner viene ucciso?
Esiste un'opzione che posso passare allo spawn o devo usare un metodo diverso o devo catturare il segnale kill (e funzionerà per un kill -9)?
Il mio problema è esattamente l'opposto. I processi generati non vengono mantenuti in vita se il genitore muore, ed è quello che voglio. Aggiornamento – cprcrack
: sembra accadere solo su Windows. – cprcrack