Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (32 – TCP клиент/сервер, часть 8 - игры порожденных процессов)

предыдущая часть ««»» следующая часть

Во избежание превышения подобного лимита любая программа, в которой применяется функция fork (), должна время от времени вызывать функции wait () или waitpid () и убирать свои дочерние процессы. Однако это желательно выполнять сразу после завершения работы каждого дочернего процесса. Например, родителем создан дочерний процесс обработки ответов от сервера Dlja-Devochek-Igry.ru - монстр хай онлайн и при этом важно отслеживать состояние соединения и самого дочернего процесса в целом в реальном времени.

В системе UNIX предусмотрена удобная возможность своевременно вызывать фупкции wait () или waitpid (), поскольку в этой системе вырабатывается сигнал KHLD. Данный сигнал отправляется родительскому процессу при каждом изменении состояния любого из его дочерних процессов. К возможным изменениям состояния относится завершение работы дочернего процесса (нас интересует именно этот случай), а также приостановка выполнения дочернего процесса по сигналу STOP. Сигнал CHLD не предоставляет никакой информации, а только констатирует тот факт, что изменилось состояние какого-то дочернего процесса. Родительский процесс должен прослушать функцию wait () или waitpid(), чтобы определить, к какому дочернему процессу относится эта информация и что с ним произошло, если состояние одного из дочерних процессов действительно изменилось.

$pid = wait ()

Эта функция ожидает завершения работы любого дочернего процесса, а затем возвращает его. Если нет ни одного дочернего процесса, непосредственно готового для уборки, этот вызов зависает (блокируется) до тех пор, пока такой процесс не появится.

Если нужно определить, произошло ли нормальное завершение работы дочернего процесса или он завершился из-за ошибки, можно исследовать специальную переменную $?, которая содержит код состояния выхода дочернего процесса. Значение этого кода, равное 0, указывает, что дочерний процесс завершился нормально. Любые другие значения указывают на аварийное завершение. Информация о том, как интерпретировать содержимое переменной $?, приведена в документе POD perlvar.



2014-05-08 13:14:07

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония