chiark / gitweb /
prefork-interp: fixes and tests
[chiark-utils.git] / perl / Prefork.pm
index fa986c1c739045b9e15436fd13355eb70947e710..8de4aaf314d266b2583005d7ddcb4e7114a07d13 100644 (file)
@@ -1,9 +1,13 @@
 
 package Proc::Prefork;
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(initialisation_complete);
 
 use Carp;
-use POSIX;
 use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
+use POSIX;
+use Sys::Syslog;
 
 our $logger;
 
@@ -20,7 +24,7 @@ sub server_quit ($) {
 
 # Returns in the executor process
 sub become_monitor () {
-  my $child = fork // fail("fork executor: $!");or 
+  my $child = fork // fail("fork executor: $!");
   if (!$child) {
     #---- executor ----
     open ::STDIN , "<& $call_fds[0]" or fail("dup for fd0");
@@ -112,8 +116,8 @@ sub initialisation_complete {
   foreach (@env_params) {
     $_ eq ($_+0) or croak "$env_name contains $_, not a number";
   }
-  open LISTEN, "<>&=$env_params[0]" or croak "listen fd: $!";
-  open CALL,   "<>&=$env_params[1]" or croak "listen fd: $!";
+  open LISTEN, "+>&=$env_params[0]" or croak "listen fd: $!";
+  open CALL,   "+>&=$env_params[1]" or croak "listen fd: $!";
   @call_fds = ($env_params[2], $env_params[3], 2);
 
   if (!$opts{no_openlog}) {
@@ -121,7 +125,7 @@ sub initialisation_complete {
            $opts{log_facility} // 'log_user');
   }
 
-  open NULL, "<>/dev/null" or croak "open /dev/null: $!";
+  open NULL, "+>/dev/null" or croak "open /dev/null: $!";
 
   #---- fork for server ----