Integrate from maint:
Jarkko Hietaniemi [Sun, 4 May 2003 12:01:00 +0000 (12:01 +0000)]
[ 18568]
Add the POSIX::sigaction() trick by Slaven Rezic
for [perl #17341].
p4raw-link: @18568 on //depot/maint-5.8/perl: b63b4058977cacb57fd0a26b3de014d3f4ca3296

p4raw-id: //depot/perl@19406
p4raw-integrated: from //depot/maint-5.8/perl@18568 'merge in'
pod/perlipc.pod (@18197..) pod/perlfunc.pod (@18379..)

pod/perlfunc.pod
pod/perlipc.pod

index 192658f..b538701 100644 (file)
@@ -429,6 +429,8 @@ modulo the caveats given in L<perlipc/"Signals">.
        # didn't
     }
 
+For more information see L<perlipc>.
+
 =item atan2 Y,X
 
 Returns the arctangent of Y/X in the range -PI to PI.
index 96cfa8c..476fa91 100644 (file)
@@ -340,6 +340,18 @@ the signal flags and calls %SIG handlers before resuming IO operation.)
 Note that the default in Perl 5.7.3 and later is to automatically use
 the C<:perlio> layer.
 
+Note that some networking library functions like gethostbyname() are
+known to have their own implementations of timeouts which may conflict
+with your timeouts.  If you are having problems with such functions,
+you can try using the POSIX sigaction() function, which bypasses the
+Perl safe signals (note that this means subjecting yourself to
+possible memory corruption, as described above).  Instead of setting
+C<$SIG{ALRM}> try something like the following:
+
+    use POSIX;
+    sigaction SIGALRM, new POSIX::SigAction sub { die "alarm\n" }
+        or die "Error setting SIGALRM handler: $!\n";
+
 =item Signals as "faults"
 
 Certain signals e.g. SEGV, ILL, BUS are generated as a result of