Сигналы в среде Perl являются не менее важными, чем скажем грамотная оптимизация и продвижение сайта при предоставлении услуг. Рассмотрим подробнее систему и принцип отправки сигналов. Сценарий Perl может послать сигнал другому процессу с использованием функции kill().
$count = kill($signal, @processes );
Функция kill() посылает сигнал $signal одному или нескольким процессам. Сигнал может быть указан в числовом, например 2, или символическом виде, например INT. Параметр @processes представляет собой список из одного или нескольких идентификаторов процессов, которым должен быть доставлен сигнал. Число процессов, которым был успешно отправлен сигнал возвращается в качестве результата вызова функции kill().
Один процесс может отправить сигнал другому, только если он имеет на это достаточные привилегии. Как правило, процесс, имеющий привилегии обычного пользователя, может отправлять сигналы только процессам с привилегиями того же пользователя. Однако процесс, имеющий привилегии пользователя root или суперпользователя, может отправить сигнал любому процессу.
Функция kill() предоставляет возможность применить несколько интересных приемов. Если в вызове этой функции применяется специальный номер сигнала 0, она возвращает число процессов, которым мог быть отправлен этот сигнал, без фактической его доставки. При использовании в качестве идентификатора процесса отрицательного числа, функция kill рассматривает абсолютное значение этого числа как идентификатор группы процессов и доставляет сигнал всем членам группы.
Сценарий может послать сигнал самому себе, вызвав функцию kill() с переменной $$, которая содержит текущий идентификатор процесса.