|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Maxim Yemelyanov 2:5020/400 23 Feb 2005 14:16:35 To : All Subject : AS Perl, сигналы, виндовые сообщения... --------------------------------------------------------------------------------
Приветствую!
Даже не знал, что написать в сабже... В общем, по порядку.
Чтобы пнуть процесс под юниксами ему можно послать сигнал. Задался я той
же задачей для виндов. Поискал чего-либо подобное на CPAN, не нашел.
Решил написать модуль, позволяющий по PID процесса послать ему сигнал,
если мы под юниксом или (если мы под виндой) определить thread id
главного потока и послать ему сообщение.
Тестовая программа на си сработала без проблем. Пробую то же на перл:
Первая копия программы определяет свой tid (GetCurrentThreadId),
последующие делают ему тестовый SendThreadMessage.
Результат: первая копия вылетает по SIGHUP (если блокироваться на
GetMessage) или совсем не получает сообщения (если вызывать PeekMessage).
Первое, что приходит в голову: проверить с $SIG{'HUP'} = 'IGNORE'
В результате сообщения приходят, но не все. Часть теряется.
Получается, что в виндовых версиях перла сигналы семулированы
сообщениями главному потоку приложения (интерпретатора? кому они
предназначены?).
Сие исследование все же не дает ответа на вопрос: как пнуть перловую
программу под виндой? В идеале хотелось бы функциональности apachectl:
[повторный] вызов программы с опцией -k command заставляет предыдущую
копию перечитать конфиг, перегрузиться или начать немедленное выполнение
к-либо действия.
--
Удачи!
Максим
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5.3
* Origin: Enigma Soft (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/13126b20a0a18.html, оценка из 5, голосов 10
|