diff options
Diffstat (limited to 'network/fcgiwrap/spawn-fcgi')
-rw-r--r-- | network/fcgiwrap/spawn-fcgi | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/network/fcgiwrap/spawn-fcgi b/network/fcgiwrap/spawn-fcgi new file mode 100644 index 0000000000..829d05504a --- /dev/null +++ b/network/fcgiwrap/spawn-fcgi @@ -0,0 +1,29 @@ +#!/usr/bin/perl + +use strict; +use warnings FATAL => qw( all ); + +use IO::Socket::UNIX; + +my $bin_path = '/usr/sbin/fcgiwrap'; +my $socket_path = $ARGV[0] || '/tmp/cgi.sock'; +my $num_children = $ARGV[1] || 1; + +close STDIN; + +unlink $socket_path; +my $socket = IO::Socket::UNIX->new( + Local => $socket_path, + Listen => 100, +); + +die "Cannot create socket at $socket_path: $!\n" unless $socket; + +for (1 .. $num_children) { + my $pid = fork; + die "Cannot fork: $!" unless defined $pid; + next if $pid; + + exec $bin_path; + die "Failed to exec $bin_path: $!\n"; +} |