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

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

Реклама

Perl для IP-Телефонии (18 – Сигналы, часть 9)

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

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

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

Иногда автоматическое возобновление выполнения системного вызова является нежелательным. Например, рассмотрим приложение, которое выводит для пользова­теля приглашение ввести пароль и пытается прочитать ответ со стандартного уст­ройства ввода. В этом приложении может потребоваться установить выдержку вре­мени для выполнения этой операции чтения на тот случай, если пользователь отой­дет на некоторое время и оставит терминал без присмотра. На первый взгляд, такое требование позволяет реализовать следующий фрагмент кода:

my $timed_out = 0;
$SIG{ALRM} =sub { $timed_out =   1 };
print STDERR "type your password:";
alarm(5);         
my $password = <STDIN>;
alarm (0);
print STDERR "you timed out" if $timed_out;

Здесь для установки таймера применяется функция alarm(). По истечении установленного времени операционная система вырабатывает сигнал ALRM, который перехватывается обработчиком, устанавливающим значение глобальной переменной $timed_out равным истинному значению. В этом коде функция alarm() вызывается с выдержкой времени пять секунд, а затем со стандартного устройства ввода считыва­ется строка. После выполнения чтения снова вызывается функция alarm() с параметром, равным нулю, что приводит к отключению таймера. Замысел этого кода со­стоит в том, что пользователю предоставляется пять секунд для ввода пароля. Если этого не будет сделано, истечет время, установленное функцией alarm, и остальная часть программы будет пропущена.



2013-10-03 19:40:37

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


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


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


РЕКОМЕНДУЕМ

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