I am playing with a daemon that forks and am trying to be thorough as this will 
hopefully become production code.  My daemon uses:

use POSIX qw(:sys_wait_h :errno_h :signal_h);

For some of the fork handling. Later I looked at the fork description from The Camel 
(3rd Edition - pg. 715) and then added the following to my fork:

use Errno qw(EAGAIN);
<etc.>
elsif ($! == EAGAIN) {
  sleep 5;
  redo FILEFORK;
}

When running this code I get:

Prototype mismatch: sub main::EAGAIN vs () at /usr/local/lib/perl5/5.6.1/Exporter.pm 
line 57.
        Exporter::import('Errno', 'EAGAIN') called at 
/export/home/bmiller/rearch/bin/daemon.pl line 26
        main::BEGIN() called at /usr/local/lib/perl5/5.6.1/sun4-solaris/Errno.pm line 
26
        eval {...} called at /usr/local/lib/perl5/5.6.1/sun4-solaris/Errno.pm line 26

Which appears to be a "Severe" warning. (and as you can see I am on solaris with 5.6.1 
hopefully moving to 5.8.0 early next year).  

I realize that my two use statements are conflicting and that use POSIX qw (:errno_h) 
is likely already defining EAGAIN.  So my question is do I need to worry about the 
warning, do I need to even include the use Errno qw(EAGAIN) since I already have the 
use POSIX line in there?  Or should I remove the :errno_h from the POSIX string and 
get them using Errno? How is this particular instance best handled? 

Thanks,

http://danconia.org


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to