Perl-Sensitive Sunglasses | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
Esteemed Monks, It seems that ActiveState's Win32 implementation of alarm will not terminate blocking system calls. Consider this brief example:
You can run this such as "test.pl smtp.myisp.com:25" to return your ISP's mail server ID. Under Linux, the alarm will break in after 5 seconds with no response. Under Win32, using alarm will not interrupt the process. Every Perl networking book I have recommends this technique to handle timeouts, but you are stuck with a 20+ second wait under Windows. Is there any other way to get control back faster? Perhaps a way to specify a timeout value associated with the read command? Thanks for your advice. UPDATE: Thank you for all the very quick and helpful answers. Yes, a lighter-weight solution is preferable. But if not possible, then any solution is better than none. This is part of a project replacing a Windows .exe with cross-platform code. So it needs to run on both Linux and the older Windows boxes. So far it has been very successful, until this snag. There is a Timeout argument to new() when creating the socket, but apparently that only applies to connect() and accept(). In reply to Timeouts: Any alternative to alarm in Win32? by jbbarnes
|
|