| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > fork & kill |
| Автор: zzzzzzzzzzzzzzzzzzz 25.9.2009, 16:42 |
| Ситуация такая: есть процесс, который порождает другие процессы посредством fork. Для проверки того, живы ли еще дочерние процессы использую kill 0, $pid. Первый вопрос - правилен ли такой подход? Дочерние процессы периодически умирают. Однако kill, $pid продолжает возвращать 1. Второй вопрос - почему так? Если вызвать эту инструкцию из другого процесса, она возвращает 0 только тогда, когда остановлен родительский процесс. Сильно не пинайте, в перле новичок. |
| Автор: ginnie 25.9.2009, 17:18 |
| zzzzzzzzzzzzzzzzzzz, о завершении дочернего процесса родительский узнает посредством сигнала CHLD. Пример использования есть в perldoc perlipc. |
| Автор: zzzzzzzzzzzzzzzzzzz 25.9.2009, 22:57 |
| спасибо, будем искать |
| Автор: gcc 26.9.2009, 02:49 | ||
? |
| Автор: sir_nuf_nuf 26.9.2009, 11:46 | ||
по моему такая конструкция "проверяет возможность отправки сигнала", не факт что это как-то связано с существованием процесса. И еще может работать по разному в разных операционках. Используйте wait и waitpid |
| Автор: Pfailed 26.9.2009, 16:54 |
Если ваши дочерние процессы не живы, то они стали зомби потому как вы не обрабатываете сигнал CHLD (как уже говорили выше с помощью waitpid). Видимо с этим и связан различный результат kill(0, $pid) из родительского и внешних процессов. |