|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.09.2012, 06:45 | #1 |
Новичок
Джуниор
Регистрация: 08.09.2012
Сообщений: 2
|
Завершение приложения при ожидании accept()
Доброго времени суток.
Столкнулся со следующей проблемой. Пишу сервер. Есть слушающий сокет, при поступлении запроса от клиента создается дочерний процесс, который и обрабатывает клиента. Но при завершении дочернего процесса, завершается и родительский. Если убрать обработку сигнала, все нормально, но остаются зомби, если оставить один accept() а после него бесконечный цикл, то так же все работает. Я так понял приложение завершается из-за обработки сигнала во время ожидания accept(). Ниже приведен код. Собственно вопрос, что я не так сделал? Код:
|
15.10.2012, 12:06 | #2 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 47
|
Я считаю что не нужно никаких обрабтчиков. Ты явно даешь дочернему процессу понять что он должен завершиться с кодом 0.
У тебя обработчик "child_handler" дернется только тогда когда потомок умрет, спрашивается, чего ты будешь ждать в wait()? ставь wait() сразу после fork(), с проверкой на родительский процесс. |
17.10.2012, 05:33 | #3 |
Новичок
Джуниор
Регистрация: 08.09.2012
Сообщений: 2
|
После смерти потомка, в системе остается зомби, функция wait() в обработчике этого зомби убирает. В результате при частом подключении клиентов, список процессов не засоряется записями о несуществующих процессах.
На счет wait() после fork() не совсем понял. Ведь если я поставлю wait() после fork() в родительском процессе он остановится пока дочерний процесс не завершиться, и сервер не сможет принять еще одного клиента |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Безусловное завершение работы приложения | Aleksandr_59 | Общие вопросы Delphi | 6 | 13.04.2012 20:53 |
Pipe,завершение приложения | Скарам | Помощь студентам | 3 | 31.03.2010 12:56 |
завершение цикла при нажатии клавиши | LLIyPI/IK | Общие вопросы C/C++ | 8 | 12.02.2010 13:29 |
Завершение приложения | lenivec | Общие вопросы Delphi | 16 | 05.01.2008 15:23 |
Завершение приложения, вместе с ОС | John_chek | Общие вопросы Delphi | 5 | 08.06.2007 16:00 |