I think I've managed to re-create the situation you are seeing. I believe you are suffering from buffering.
Please try the following code and report your results. This isn't intended as a complete solution, but rather a diagnostic to understand your problem.
#! perl -slw
use strict;
use Win32::Socketpair qw[ winopen2 ];
## Run the command and get a bi-direction pipe to it.
my( $pid, $pipe ) = winopen2( 'RunMe.exe', $ARGV[0 ] // 10 );
## preload the childs input buffer with the answer to the prompt;
print $pipe "\n";
## give the kid a chance to say whatever it has to say
sleep 2;
## a nonblocking read to grab whatever has made it through the buffers
## which if the kid produced less output than the size of its output b
+uffer
## and didn't flush them, may be nothing at all
my $results = '';
sysread( $pipe, $results, 65536, length $results );
close $pipe;
print for split "\n", $results; ## May produce no output
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
|