Подпрограмма open_pid_file () должна быть вызвана перед автоматическим переводом сервера в фоновой режим. Это дает возможность выдать сообщения об ошибках перед закрытием стандартного устройства вывода сообщения об ошибках. После этого вызывающая программа должна вызвать подпрограмму become_daemon () для получения нового идентификатора процесса и записи полученного PID в файл PID с использованием дескриптора файла, возвращенного подпрограммой open_pid_file (). Ниже приведен полный фрагмент кода, иллюстрирующий общую схему автоматического перевода в фоновый режим:
use constant PID_FILE => ‘/var/run/servername.pid‘;
$SIG{TERM} = $SIG{INT} = sub { exit 0; }
my $fh = open_pid_file (PID_FILE) ;
my $pid = become_daemon () ;
print $fh $pid;
close $fh;
END { unlink PID_FILE if $pid == $$; }
В соответствии с общепринятым соглашением, во многих системах UNIX для записи файлов PID работающих демонов используется каталог /var/run. В системах Solaris используется каталог /etc или /usr/local/etc.
Блок END гарантирует удаление сервером файла PID перед выходом. Файл удаляется, только если идентификатор текущего процесса совпадает с идентификатором процесса, возвращенным подпрограммой become_daemon (). Это исключает возможность непреднамеренного удаления этого файла любым из дочерних процессов сервера.
Установка обработчиков сигналов TERM и INT предусмотрена для обеспечения нормального завершения серверной программы при получении этих сигналом, в ином случае блок END {} не был бы выполнен и файл PID остался бы в системе после завершения работы сервера.