my $sigset = POSIX::SigSet->new(SIGCHLD); my $sigaction = POSIX::SigAction->new( sub { }, $sigset, &POSIX::SA_RESTART ); my $old_sigset = POSIX::SigSet->new; sigprocmask(SIG_SETMASK, $sigset, $old_sigset) or die "Could not set signal mask\n"; $reader_pid = open(INPIPE,"cat /tmp/file |") my $buffer; #Pipe buffer on AIX seems to be 32K while($rbytes = sysread(INPIPE,$buffer,32768)){ $wbytes = syswrite(OUTPIPE,$buffer); #print OUTPIPE $buffer; if($wbytes != $rbytes){ die("Error writing to outpipe."); } } if(!defined($rbytes)){ bomb("INPIPE had error: $!\n",2); } close(INPIPE) or die $! ? "Error closing inpipe: $!" : "Exit status $? from inpipe";