summaryrefslogtreecommitdiff
path: root/network/fcgiwrap/spawn-fcgi
diff options
context:
space:
mode:
Diffstat (limited to 'network/fcgiwrap/spawn-fcgi')
-rw-r--r--network/fcgiwrap/spawn-fcgi29
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";
+}