Вполне возможно, что при первой же попытке выполнить сценарий в этом режиме, он закончится аварийно на самом первом этапе с сообщением “Insecure path” или “Insecure dependency”. Чтобы избежать появления сообщений о переменной PATH и других потенциально опасных переменных среды, их необходимо явно установить или удалить во время инициализации. В сценарии психотерапевтического сервера это можно сделать во время выполнения подпрограммы become_daemon (), поскольку в ней уже явно устанавливается значение переменной PATH.
В результате создается впечатление, что психотерапевтический сервер работает нормально, пока не возникают определенные обстоятельства. Если выполнение серверного сценария в качестве демона завершается аварийно, например, в результате выполнения команды kill -9, то при следующей попытке его запуска на выполнение подпрограмма open_pid_f ile () обнаруживает оставшийся файл PID и проверяет, работает ли еще старый процесс, вызвав функцию kill () с сигналом 0.
Однако в этот момент выполнение программы завершается с сообщением об ошибке.
Insecure dependency in kill while running with -T switch at
Daemon.pm line 86.
Причина этой ошибки очевидна. Значение переменной $pid было считано из не-уничтоженного файла PID, а поскольку он находится за пределами сценария, то считается потенциально опасным. С другой стороны, функция kill () воздействует на то, что находится за пределами сценария, и поэтому ей запрещено работать под управлением потенциально опасных переменных. Чтобы этот сценарий мог работать, необходимо каким-то образом присвоить переменной $pid значение, которое не является потенциально опасным.