|
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
|