Ответ 1
По-видимому, если процесс в группе процессов остановлен, все процессы передаются с SIGHUP, а затем SIGCONT, когда лидер группы процессов прекращается. Обработчик по умолчанию для SIGHUP завершает процесс. Ожидается, что поведение, как описано, например,
http://www.win.tue.nl/~aeb/linux/lk/lk-10.html
Из приведенной выше ссылки:
Если прекращение процесса вызывает группа процессов, чтобы стать сиротой, и кто-то остановлен, тогда все отправил сначала SIGHUP, а затем SIGCONT.
Идея состоит в том, что, возможно, родитель лидер группы процессов - это работа контрольная оболочка. (В той же сессии а другая группа процессов.) Как пока этот родитель жив, он может обрабатывать остановку и запуск членов в группе процессов. Когда это умирает, не может быть никого, чтобы продолжить остановил процессы. Поэтому эти остановленные процессы отправляются SIGHUP, поэтому что они умирают, если они не поймают или игнорировать его, а затем SIGCONT продолжайте их.
EDIT:
BTW, strace - замечательный инструмент для того, чтобы добраться до всего этого. Если вы привяжете strace к одному из дочерних процессов, вы увидите, что SIGHUP будет доставлен только в том случае, если один из них остановлен, когда умирает родительский (то есть лидер группы процессов).
Вам нужно изменить обработчик для SIGHUP, используя, например, sigaction (2), если вы хотите, чтобы процессы детей выживали.