![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
zzzzzzzzzzzzzzzzzzz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 25.9.2009 Репутация: нет Всего: нет |
Ситуация такая: есть процесс, который порождает другие процессы посредством fork. Для проверки того, живы ли еще дочерние процессы использую kill 0, $pid. Первый вопрос - правилен ли такой подход?
Дочерние процессы периодически умирают. Однако kill, $pid продолжает возвращать 1. Второй вопрос - почему так? Если вызвать эту инструкцию из другого процесса, она возвращает 0 только тогда, когда остановлен родительский процесс. Сильно не пинайте, в перле новичок. |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
zzzzzzzzzzzzzzzzzzz, о завершении дочернего процесса родительский узнает посредством сигнала CHLD. Пример использования есть в perldoc perlipc.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
zzzzzzzzzzzzzzzzzzz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 25.9.2009 Репутация: нет Всего: нет |
спасибо, будем искать
![]() |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
? |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: нет Всего: 31 |
по моему такая конструкция "проверяет возможность отправки сигнала", не факт что это как-то связано с существованием процесса. И еще может работать по разному в разных операционках. Используйте wait и waitpid |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
Если ваши дочерние процессы не живы, то они стали зомби потому как вы не обрабатываете сигнал CHLD (как уже говорили выше с помощью waitpid). Видимо с этим и связан различный результат kill(0, $pid) из родительского и внешних процессов. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |