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

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

Реклама

Perl для IP-Телефонии (17 – Каналы, часть 6)

предыдущая часть ««»» следующая часть
выписки из реестра ЕГРЮЛ

Создание первого дочернего процесса. Для получения копии текущего про­цесса вызывается функция fork(). В родительском процессе функция fork() возвращает ненулевой идентификатор дочернего процесса, в дочернем - числовое значение 0. Если бу­дет обнаружено, что результат выполнения функции fork() равен 0, значит, данный процесс является дочерним. В этом процессе закрывается дескриптор файла reader, поскольку он не нужен. Вызывается функция select() с параметром writer, в результате чего этот дескриптор файла становится применяемым по умолчанию для вывода, и включается режим автоматического сброса путем установки переменной равной истинному значению. Это необходи­мо для того, чтобы родительский процесс получал сообщения из дочернего процесса сразу после их записи.

Теперь вызывается подпрограмма factorial() с целочисленным параметром, полученным из командной строки. После этого дочерний процесс оканчивает свою работу, поэтому вызывается функция exit(). Копия дескриптора файла writer, принадлежащая дочернему процессу, закрывается автоматически.

Создание второго дочернего процесса. В родительском процессе снова вы­зывается функция fork() для создания второго дочернего процесса. Однако этот дочерний процесс вызывает подпрограмму fibonacci(), а не factorial().

Создание связанных каналов. Связанные каналы создаются с помощью функции pipe(). Дескриптор файла reader будет применяться главным (родительским) процессом для чтения результатов, полученных от дочерних процессов, которые будут выполнять запись результатов с помощью дескриптора файла.

Обработка сообщений, полученных от дочерних процессов. В родительском процессе закрывается дескриптор файла writer, поскольку он больше не нужен. Выполняется построчное чтение из дескриптора файла reader и вывод результатов на устройство вывода. Эти результаты содержат строки, возвращенные обоими дочерними процессами. Дескриптор файла reader возвращает значение undef, после того как последний дочерний процесс закончит свою работу и закроет дескриптор файла writer, отправляя код условия EOF. После этого можно закрыть дескриптор файла reader с помощью функции close() и проверить код результата или позволить интерпретатору Perl закрыть дескриптор файла при выходе из программы.



2013-09-24 12:40:50

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


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


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


РЕКОМЕНДУЕМ

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