[rt.cpan.org #73747] question / possible bug with Win32::IPC

[email protected] ("Cary Lewis via RT")
Newsgroups perl.libwin32
Message-ID <[email protected]>
Wed Jan 04 14:14:44 2012: Request 73747 was acted upon.
Transaction: Ticket created by [email protected]
       Queue: Win32-IPC
     Subject: question / possible bug with Win32::IPC
   Broken in: (no value)
    Severity: (no value)
       Owner: Nobody
  Requestors: [email protected]
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=73747 >


I am using Win::IPC via Win::ChangeNotify, and I have noticed that if I
have a signal handler active at the time of doing a wait, then the signal
that is being "handled" is ignored.

The following code demonstrates the issue:

use Win32::ChangeNotify;

$WatchSubTree = 0;

$Events="FILE_NAME";

$notify = Win32::ChangeNotify->new(".", $WatchSubTree, $Events);

$SIG{INT} = sub {print "ok\n";exit;};

print "during this sleep, intr will be caught!\n";
sleep(2);

while(1)
{
        print "waiting\n";

        $notify->wait();

        print "change!\n";

        $notify->reset;
}

Once the $notify->wait() call is executed, the $SIG{INT} no longer works,
and furthermore, hitting ctrl-c no longer interrupts the wait.

Without the $SIG{INT} code, ctrl-c does interrupt the wait.

I tried to search for Win32::IPC wait and signal handler - but didn't see
anything relevant, so I hope you don't mind me sending you an email.

BTW, I running this on Windows 7 32bit under Cygwin and I also reproduced
this with the strawberry perl.

Any insight would be most appreciated.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.