#!/usr/bin/env perl use strict; use warnings; use IO::Socket::INET; use Fcntl; my $socket = IO::Socket::INET->new( LocalAddr => "127.0.0.1:0", Listen => 1 ); sysopen(my $fh, $ARGV[0], O_WRONLY|O_CREAT|O_EXCL, 0666) or die "open: $ARGV[0]: $!"; my $pid = fork(); if ($pid > 0) { print $fh $pid; print $socket->sockport()."\n"; exit; } close($fh); open(STDIN, 'accept(); my $worker = fork(); if ($worker == 0) { open(STDIN, '<&', $conn); open(STDOUT, '>&', $conn); close($conn); close($socket); exec @cmd; exit } close($conn); }