in reply to problems on signal handling, Glib mainloop, and named pipe

I was toying with this and came up with a solution for your test script. It seems that if you do the open (read-write) '+<' instead of '<' , your second script works as intended. I just happened to see it mentioned in some docs about POSIX rules to make non-blocking pipe opens.
#!/usr/bin/perl use warnings; use strict; use Glib qw/TRUE FALSE/; my $file_pipe = "$$".'_pipe'; system('mkfifo',$file_pipe)==0 or die $!; my $p_read; open $p_read,'+<',$file_pipe or die $!; # needs '+<' instead of '<' t +o be nonblocking $SIG{USR1} = \&on_usr1; my $loop = Glib::MainLoop->new( 'default', FALSE ); #test non-blocking is working my $count = 1; print "$count\n"; #my $timer = Glib::Timeout->add (1000, \&timer_callback, undef, 1 ); $loop->run; sub on_usr1 { my $sig = shift; print "somebody told me $sig\n"; } sub timer_callback{ $count++; print "$count\n"; return 1; }
$ ./signal-w-pipe & 1 16594 $ 1 kill -s USR1 16594 somebody told me USR1

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh