#!/usr/bin/perl -w use POSIX qw(:signal_h :errno_h :sys_wait_h); $command = $ARGV[0]; parse(); if (!defined ($pid = fork())) { die "cannot fork: $!"; } elsif ($pid == 0) { exec("$command"); } else { waitpid($pid, 0); if (WIFEXITED($?)) { print "Exited\n"; } elsif (WIFSIGNALED($?)) { $sig = WTERMSIG($?); if ($sig == 11) { print "Segfault\n"; exit 11; } print "Signaled $sig\n"; } else { print "EH\n"; } } close STDOUT; exit 0; sub parse { my $pid; return if $pid = open(STDOUT, "|- "); die "cannot fork: $!" unless defined $pid; while (my $line = ) { print "$line"; } exit; }