The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Отслеживание состояния процессов-внуков"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Отслеживание состояния процессов-внуков"  +/
Сообщение от проходил мимо on 14-Июл-11, 14:10 
Есть задача отслеживать состояние сторонних процессов, которые выполняют какие-то важные задачи. В частности, если такой процесс упал - необходимо его перезапустить. При этом внести какие-либо изменения в код самих этих процессов нельзя. Для решения этой задачи я написал демон, который запускает из себя процесс (fork + exec), за которым он следит и в дальнейшем отлавливает сигнал SIGCHLD с целью обнаружить его завершение и перезапустить. Пока дело идет именно о процессах-детях все работает на ура. Но проблема в том, что многие процессы в ходе своей работы делают fork(), после чего умирает именно родительская копия, а работать остается дочерняя. При этом мой демон (родительский процесс) получает SIGCHLD только от запущенной от него копии (дочерний процесс) и никак не реагирует на то, что у этого родителя есть внучатые процессы.

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Отслеживание состояния процессов-внуков"  +/
Сообщение от NuINu (??) on 14-Июл-11, 23:46 
>[оверквотинг удален]
> процесс (fork + exec), за которым он следит и в дальнейшем
> отлавливает сигнал SIGCHLD с целью обнаружить его завершение и перезапустить. Пока
> дело идет именно о процессах-детях все работает на ура. Но проблема
> в том, что многие процессы в ходе своей работы делают fork(),
> после чего умирает именно родительская копия, а работать остается дочерняя. При
> этом мой демон (родительский процесс) получает SIGCHLD только от запущенной от
> него копии (дочерний процесс) и никак не реагирует на то, что
> у этого родителя есть внучатые процессы.
> Вопрос - каким образом можно отследить состояние внучатых процессов, в частности зафиксировать
> факт их смерти.

скорее всего это не возможно, после смерти сына, внука усыновляет не дед, а процесс инит(1). и ему передаются все сигналы от внука.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Отслеживание состояния процессов-внуков"  +/
Сообщение от hertatet (ok) on 21-Июл-11, 00:45 
>[оверквотинг удален]
>> дело идет именно о процессах-детях все работает на ура. Но проблема
>> в том, что многие процессы в ходе своей работы делают fork(),
>> после чего умирает именно родительская копия, а работать остается дочерняя. При
>> этом мой демон (родительский процесс) получает SIGCHLD только от запущенной от
>> него копии (дочерний процесс) и никак не реагирует на то, что
>> у этого родителя есть внучатые процессы.
>> Вопрос - каким образом можно отследить состояние внучатых процессов, в частности зафиксировать
>> факт их смерти.
> скорее всего это не возможно, после смерти сына, внука усыновляет не дед,
> а процесс инит(1). и ему передаются все сигналы от внука.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Отслеживание состояния процессов-внуков"  +/
Сообщение от AHAHAC (ok) on 30-Июл-11, 06:52 
> В частности, если такой процесс упал - необходимо его перезапустить.

O, с этим вопросом к Федорвцам, у них там какая-то х..ня, всех умеет перезапускать.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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