6 use POSIX ":sys_wait_h";
11 my $out = shift @ARGV;
14 open my $fout, ">>", $out or die "Can't write to $out: $!" if $out;
16 my $select = IO::Select->new();
25 $kid = waitpid( -1, WNOHANG );
32 $SIG{CHLD} = \&sigchld;
34 $pid = open3( "<&STDIN", \*child_out, \*child_err, @ARGV );
41 fcntl ( $h, F_GETFL, $flags )
42 or die "Couldn't get flags for HANDLE : $!\n";
44 fcntl ( $h, F_SETFL, $flags )
45 or die "Couldn't set flags for HANDLE: $!\n";
50 sethandle( \*child_out );
51 sethandle( \*child_err );
54 foreach my $h ( $select->can_read() ) {
56 print $fout $_ if $fout;
57 if ( $h == \*child_err ) {
58 print "\033[31m$_\033[0m";