открывать и закрывать процессы Perl с тайм-аутом кросс-платформенного - PullRequest
0 голосов
/ 21 февраля 2012

Как я могу запустить и завершить процесс после перерыва в Perl? Мне нужен скрипт для работы в Windows и Unix, каковы мои лучшие варианты?

edit: как получить идентификатор процесса для запущенного процесса в windows и unix и как его убить во время ожидания

1 Ответ

1 голос
/ 21 февраля 2012

Вы можете использовать операционную систему для подачи сигнала ALRM (аварийного сигнала), после чего вы можете выйти из процесса через заданное количество секунд.

Так, например, если в верхней части вашего сценария вы поставили:

alarm 300;

Это приведет к тому, что ваш процесс получит сигнал ALRM. Это немедленно убьет ваш процесс, или вы можете перехватить его и очистить процесс до его смерти.

Для дальнейшего чтения: http://perldoc.perl.org/functions/alarm.html

Вы можете перехватить сигнал следующим образом:

$SIG{ALRM} = sub {

# Clean up process here and exit

};

В ответ на ваши правки «правка: как получить идентификатор процесса для запущенного процесса в Windows и Unix и как его убить во время ожидания»

Идентификатор процесса хранится в perl как $$, поэтому:

print 'My process ID is:', $$, "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...