#------# Begin code for test_open3.pl #!c:/apps/perl/bin/perl use IPC::Open3 qw( open3 ); use strict; use warnings; $| = 1; open DBG, ">debug2.log" or die $!; eval { my @pids; my @cmd1 = ( 'c:/Program Files/TortoiseSVN/bin/svn.exe', '--version', '-- quiet'); my $nul = $^O eq 'MSWin32' ? 'nul' : '/dev/null'; open(CHILD_STDERR, '>', 'error.txt') or die "Could not open CHILD_STDERR for writing ($!)"; open(CHILD_STDOUT, '>', 'out.txt') or die "Could not open CHILD_STDOUT for writing ($!)"; push @pids, open3(undef, '>&CHILD_STDOUT', '>&CHILD_STDERR', @cmd1); waitpid($_, 0) for @pids; print "Child exited with value ", $? >> 8, "\n"; #close(CHILD_STDIN) or die "Could not clost STDIN ($!)"; close CHILD_STDOUT or die "Could not close STDOUT"; open(CHILD_STDOUT, '<', 'out.txt') or die "Could not open CHILD_STDOUT for reading ($!)"; my @out = ; close CHILD_STDOUT or die "Could not close STDOUT ($!)"; close CHILD_STDERR or die "Could not close STDERR"; open(CHILD_STDERR, '<', 'err.txt') or die "Could not open CHILD_STDERR for reading ($!)"; my @err = ; close CHILD_STDERR or die "Could not close STDERR ($!)"; print "----OUT----\n", join("\n", @out), "----OUT----\n"; print "----ERR----\n", join("\n", @err), "----ERR----\n"; print DBG "Done!\n"; }; if ($@) { print DBG $@; close DBG; exit 1; } close DBG; #------#