реклама на сайте
подробности

 
 
> Борьба с процессами зомби, Программирование под Линукс
snedelko
сообщение Jan 20 2007, 20:10
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 17-02-06
Из: Харьков, Украина
Пользователь №: 14 419



Ситуация следующая: есть процесс, который запускается по автозапуску системы. Проблема: процесс при неизвесных обстоятельствах вылетает. Причины: разные java script:emoticon(':)', 'smid_2'). Возможно это утечка памяти, аппаратный сбой (программа работает с драйверами устройств), ошибка при работе с памятью и т. д. Мне нужно отследить "вылетание", и заново запустить программу. Я решил сделать это при помощи скрипта (см. влож. файл), который я поместил в автозапуск (вместо самой программы). Скрипт простой (напомню, что pidof - команда, которая возвращает pid процесса по имени, и если процесса нет, возвращает 0). Все работает, когда программы выходит по exit(0). Но вот при segmentation fault скрипт не помогает, так как процесс становиться зомби (т.е. имеет pid != 0).

Подскажите почему, или предложите свой вариант.
Прикрепленные файлы
Прикрепленный файл  smobi.rar ( 299 байт ) Кол-во скачиваний: 46
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
snedelko
сообщение Jan 22 2007, 10:50
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 17-02-06
Из: Харьков, Украина
Пользователь №: 14 419



Вообще, с процессами зомби немного знаком - боролся я с ними, вызывая в обработчике SIGCHLD функцию wait(). В моей ситуации родителем кто является? Скрипт? Объясните пожалуйста. Если скрипт - то есть ли команда - аналог функции wait()?
И подскажите мне вот в чем: мой скрипт срабатывает около 3-х раз (в ситуации, когда программа завершается сама (по exit)), а на 4-й раз появляются зомби. Откуда? И почему не появлялись раньше? А вот когда программа завершается по segmentation fault (то бишь её рубит Линукс, тем же kill наверно), то зомби появляються СРАЗУ....
Go to the top of the page
 
+Quote Post
Olej
сообщение Jan 22 2007, 11:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(snedelko @ Jan 22 2007, 11:50) *
Вообще, с процессами зомби немного знаком - боролся я с ними, вызывая в обработчике SIGCHLD функцию wait(). В моей ситуации родителем кто является? Скрипт? Объясните пожалуйста. Если скрипт - то есть ли команда - аналог функции wait()?
И подскажите мне вот в чем: мой скрипт срабатывает около 3-х раз (в ситуации, когда программа завершается сама (по exit)), а на 4-й раз появляются зомби. Откуда? И почему не появлялись раньше? А вот когда программа завершается по segmentation fault (то бишь её рубит Линукс, тем же kill наверно), то зомби появляються СРАЗУ....

Я мало что понял из этого объяснения sad.gif...
Скрипт не может быть родителем wink.gif - родителем может быть только породивший процесс, это может быть, например, скриптовый интерпретатор, выполняющий ваш скрипт...

P.S. предложение-подсказка - как разобраться в вашей trouble:
- сделайте над своим процессом пустую "обёртку", которая будет только exec/spawn ваш процесс...
- в ней вы можете перехватывать - наблюдать - обрабатывать все события...
- разобравшись что происходит - выбросите обёртку wink.gif.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016