Я написал сервер в perl, ожидая tcp-соединений. Каждый раз, когда сервер получает один, он разворачивает нового ребенка, который отвечает за него, и продолжает прослушивать другое соединение. (И поэтому он не может ждать SIGCHILD.) Ребенок делает то, что он должен делать и выходит, но продолжает «жить» как зомби. Какое решение, пожалуйста?Избавление от зомби в perl
1
A
ответ
5
Установите $SIG{CHLD} = 'IGNORE';
, чтобы система автоматически обрабатывала их для вас.
Или установите $SIG{CHLD}
в подпрограмму и waitpid
:
use POSIX qw(WNOHANG);
$SIG{CHLD} = sub {
while((my $child = waitpid(-1, WNOHANG)) > 0) {
print "SIGNAL CHLD $child\n";
}
};
Если вы действительно хотите понять, как это работает (конечно, вы делаете :), вы должны прочитать perlipc
Существует также многое другое! info here on Stack Overflow
Смежные вопросы
- 1. Избавление от «"»от json_encode
- 2. Почему дети не становятся зомби в perl
- 3. Избавление от зависимости от данных
- 4. Избавление от запятой
- 5. Избавление от `instanceof`
- 6. Избавление от derby.log
- 7. Избавление от странного кода
- 8. Избавление от дубликатов
- 9. Избавление от ошибки C2243
- 10. Избавление от сгенерированного HTML
- 11. Избавление от ненужных циклов
- 12. Избавление от ошибки SIGABRT
- 13. избавление от ненужных скобок
- 14. Избавление от Eval
- 15. Избавление от повторяющегося кода?
- 16. избавление от пустой информации
- 17. Избавление от if/else
- 18. Избавление от круговой зависимости
- 19. Избавление от node-jsx
- 20. Избавление от ссылки объекта
- 21. Избавление от Microsoft AJAX
- 22. Избавление от полей?
- 23. Избавление от поля группировки
- 24. Избавление от Django IOErrors
- 25. Избавление от document.write?
- 26. избавление от циклов
- 27. Избавление от акцентов
- 28. Избавление от дополнительной ширины?
- 29. Избавление от продавца Алгоритм
- 30. Избавление от прокладки?
Вы пробовали 'wait()'/'waitpid()'? –
спасибо за ваш ответ el.pescdo проблема в том, что waitpid блокирует родителя. У моего родителя есть что-то еще. – babak
'waitpid (-1, & WNOHANG)' не должен блокироваться. См. Ниже – grebneke