![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Есть процессы "A" и "B"n.
"A" считается "родительским", хотя, таким не является. Если "A" умер, то все "B"n тоже должны умереть. Вижу варианты:
1й вариант тормозит работу "B"n за счёт alarm'ов. 2й вариант - 'KILL' просто так не ловится. Что сделать? |
|||
|
||||
| DurRandir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: нет Всего: 17 |
А в чём тайный смысл убивания (и попытки перехвата) в 1м процессе SIGKILL? Вообще-то, не любое завершение процесса происходит по этому сигналу. Может быть, стоит сначала разобраться, зачем с ним так обходятся?) В противном случае (т.е. если его в случайный момент времени могут убить KILL'ом), у вас остаются только различные вариации 1го способа. Если во 2м приложении исользуется event loop, можно его приспособить.
|
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Тайный умысел: разрабатывается сложная система серверов, которые должны общаться друг с другом и друг от друга зависить.
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
Сервера потомки подсоединяются к главному через сокет и пытаются читать из сокета. Главный туда ничего не пишет поэтому они висят в ожидании. Когда главный умирает сокет закрывается и попытка чтения у всех подсоединившихся завершается и они завершают себя.
|
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Ну это опять alarm-ом делается в потомках. А потомки своими делами заняты. На потоки делить, наверное, придётся. Либо, потомкам нужно непрерывно что-то делать своё, кроме как ALRM обрабатывать.
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
Нет alarm тут не нужен. fork/потоки/event loop использовать придётся
|
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Ну так и написал.
[hr] А вот KILL как поймать-то? Поймал бы и убил кого нужно без всяких дополнительных приспособлений. Слышал, на C как-то можно. А значит и на Perl. Это сообщение отредактировал(а) tishaishii - 8.6.2012, 06:23 |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
SIGKILL не перехватываемый сигнал. Лучше скажите кто шлёт этот сигнал. И почему бы не слать сигнал который можно перехватить?
|
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Мало ли кто и как будет работать с этим. Сисадминам всё равно.
Добавлено через 2 минуты и 55 секунд Ну ладно. Буду заниматься, собственно, реализацией контроля. Большое спасибо за ответы. |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: нет Всего: 7 |
> 'KILL' просто так не ловится.
$SIG{TERM} = $SIG{INT} = sub { обработчик } Добавлено через 2 минуты и 27 секунд И заодно добавьте $SIG{HUP} = sub { переоткрытие логов } иначе perl может закрыть задачу |
|||
|
||||
| DurRandir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: нет Всего: 17 |
>$SIG{TERM} = $SIG{INT}
И где здесь KILL? >Сисадминам всё равно. Хорошим - не всё равно. Те же start/stop скрипты отправляют TERM/QUIT, которые вполне можно перехватывать. |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: нет Всего: 7 |
$SIG{TERM} = $SIG{INT} = sub {...} ловит обычный kill,
а kill -9 Вы ни чем не поймаете, так должно быть согласно POSIX.1 Подробнее смотрите man 7 signal |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Большое спасибо!
|
|||
|
||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |