The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Отслеживание состояния процессов-внуков, !*! проходил мимо, 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, с этим вопросом к Федорвцам, у них там какая-то х..ня, всех умеет перезапускать.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру