Порожденный node.js процесс остается, если скрипт убит

Можно ли убедиться, что процессы, порожденные дочерним процессом node.js _, будут уничтожены при уничтожении родителя?

Вот пример скрипта

var spawn = require('child_process').spawn;
var log_tail = spawn("tail", ["-f", "/dev/null"]);

setInterval(function() {
  console.log('just chilling');
}, 10000);

Если я посмотрю на дерево процессов, то увижу это:

$ ps faux
ubuntu    9788  0.0  0.0  73352  1840 ?        S    15:04   0:00  |   \_ sshd: ubuntu@pts/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

Затем позже мне нужно остановить этот скрипт, и я не могу ctrl -c (сказать, что мое соединение ssh потеряно)

$ kill 10149
$ ps faux
ubuntu   10151  0.0  0.0   7184   608 pts/7    S    15:07   0:00 tail -f /dev/null

Вы можете видеть, что хвостовой процесс все еще работает и отсоединен от какого-либо родителя.

Есть ли программный способ убить порожденный процесс, если порождающий процесс убит?

Есть ли вариант, который я могу использовать для появления, или мне следует использовать другой метод, или мне нужно поймать сигнал об убийстве (и будет ли это работать для убийства -9 )?

12
задан case nelson 9 August 2012 в 21:12
поделиться