|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Chumak 2:5020/400 23 Feb 2005 19:48:41 To : Maxim Yemelyanov Subject : Re: AS Perl, сигналы, виндовые сообщения... -------------------------------------------------------------------------------- Hello, Maxim! You wrote on Wed, 23 Feb 2005 10:16:35 +0000 (UTC): MY> Приветствую! MY> Даже не знал, что написать в сабже... В общем, по порядку. MY> Чтобы пнуть процесс под юниксами ему можно послать сигнал. Задался я MY> той же задачей для виндов. Поискал чего-либо подобное на CPAN, не MY> нашел. MY> Решил написать модуль, позволяющий по PID процесса послать ему MY> сигнал, если мы под юниксом или (если мы под виндой) определить MY> thread id главного потока и послать ему сообщение. MY> Тестовая программа на си сработала без проблем. Пробую то же на MY> перл: MY> Первая копия программы определяет свой tid (GetCurrentThreadId), MY> последующие делают ему тестовый SendThreadMessage. MY> Результат: первая копия вылетает по SIGHUP (если блокироваться на MY> GetMessage) или совсем не получает сообщения (если вызывать MY> PeekMessage). MY> Первое, что приходит в голову: проверить с $SIG{'HUP'} = 'IGNORE' MY> В результате сообщения приходят, но не все. Часть теряется. MY> Получается, что в виндовых версиях перла сигналы семулированы MY> сообщениями главному потоку приложения (интерпретатора? кому они MY> предназначены?). MY> Сие исследование все же не дает ответа на вопрос: как пнуть перловую MY> программу под виндой? В идеале хотелось бы функциональности MY> apachectl: MY> [повторный] вызов программы с опцией -k command заставляет MY> предыдущую копию перечитать конфиг, перегрузиться или начать MY> немедленное выполнение к-либо действия. Дык.. Windows != Unix В документации по ActivePerl (например) есть такое: ========= Why doesn't signal handling work on Windows? Signals are unsupported by the Win32 API. The C Runtime provides crude support for signals, but there are serious caveats, such as inability to die() or exit() from a signal handler. Perl itself does not guarantee that signal handlers will not interrupt critical operations such as memory allocation, which means signal invocation may throw perl internals into disarray. For these reasons, signals are unsupported at this time. ==================== With best regards, Igor Chumak. E-mail: igor()g-auto.pul.kiev.ua --- ifmail v.2.15dev5.3 * Origin: Adamant ISP news server (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/12034c604ed0f.html, оценка из 5, голосов 10
|