Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 AS Perl, сигналы, виндовые сообщения...   Maxim Yemelyanov   23 Feb 2005 14:16:35 
 Re: AS Perl, сигналы, виндовые сообщения...   Igor Chumak   23 Feb 2005 19:48:41 
 Re[2]: AS Perl, сигналы, виндовые сообщения...   Maxim Yemelyanov   25 Feb 2005 11:47:23 
Архивное /ru.perl/12034c604ed0f.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional