in reply to select() and sysread()

from select docs on perlfunc: Note that whether "select" gets restarted after signals (say, SIGALRM) is implementation-dependent.

So, in some OSs, select will be transparently restarted after some signal is handled, in others it will return an error, and in perl the error is materialized as -1;

Usually you can ignore signals just running select inside a while loop:

1 while (($fn=select(...))>0);
and don't bother thinking that select is not reliable, it is, you just have to check its bit vector arguments to see which files are available for reading, writing or error... or use IO::Select::select that has a more friendly interface.