Отслеживание состояния процессов-внуков, проходил мимо, 14-Июл-11, 14:10 [смотреть все]Есть задача отслеживать состояние сторонних процессов, которые выполняют какие-то важные задачи. В частности, если такой процесс упал - необходимо его перезапустить. При этом внести какие-либо изменения в код самих этих процессов нельзя. Для решения этой задачи я написал демон, который запускает из себя процесс (fork + exec), за которым он следит и в дальнейшем отлавливает сигнал SIGCHLD с целью обнаружить его завершение и перезапустить. Пока дело идет именно о процессах-детях все работает на ура. Но проблема в том, что многие процессы в ходе своей работы делают fork(), после чего умирает именно родительская копия, а работать остается дочерняя. При этом мой демон (родительский процесс) получает SIGCHLD только от запущенной от него копии (дочерний процесс) и никак не реагирует на то, что у этого родителя есть внучатые процессы.Вопрос - каким образом можно отследить состояние внучатых процессов, в частности зафиксировать факт их смерти.
|
- Отслеживание состояния процессов-внуков, NuINu, 23:46 , 14-Июл-11 (1)
>[оверквотинг удален] > процесс (fork + exec), за которым он следит и в дальнейшем > отлавливает сигнал SIGCHLD с целью обнаружить его завершение и перезапустить. Пока > дело идет именно о процессах-детях все работает на ура. Но проблема > в том, что многие процессы в ходе своей работы делают fork(), > после чего умирает именно родительская копия, а работать остается дочерняя. При > этом мой демон (родительский процесс) получает SIGCHLD только от запущенной от > него копии (дочерний процесс) и никак не реагирует на то, что > у этого родителя есть внучатые процессы. > Вопрос - каким образом можно отследить состояние внучатых процессов, в частности зафиксировать > факт их смерти.скорее всего это не возможно, после смерти сына, внука усыновляет не дед, а процесс инит(1). и ему передаются все сигналы от внука.
- Отслеживание состояния процессов-внуков, hertatet, 00:45 , 21-Июл-11 (2)
>[оверквотинг удален] >> дело идет именно о процессах-детях все работает на ура. Но проблема >> в том, что многие процессы в ходе своей работы делают fork(), >> после чего умирает именно родительская копия, а работать остается дочерняя. При >> этом мой демон (родительский процесс) получает SIGCHLD только от запущенной от >> него копии (дочерний процесс) и никак не реагирует на то, что >> у этого родителя есть внучатые процессы. >> Вопрос - каким образом можно отследить состояние внучатых процессов, в частности зафиксировать >> факт их смерти. > скорее всего это не возможно, после смерти сына, внука усыновляет не дед, > а процесс инит(1). и ему передаются все сигналы от внука.
- Отслеживание состояния процессов-внуков, AHAHAC, 06:52 , 30-Июл-11 (3)
> В частности, если такой процесс упал - необходимо его перезапустить. O, с этим вопросом к Федорвцам, у них там какая-то х..ня, всех умеет перезапускать.
|