in reply to Re^2: How to read from shell command and terminate it afterwards?
in thread How to read from shell command and terminate it afterwards?
use IPC::Open3; use IO::Handle; use threads; use Win32::Process::Kill; $process='cmd.exe'; $pid = open3( \*CHILD_IN, \*CHILD_OUT, \*CHILD_ERR, $process ); autoflush CHILD_OUT; autoflush CHILD_ERR; threads->create(\&handle_child_out)->detach; threads->create(\&handle_child_err)->detach; unlink('out.txt'); do { open IN,'out.txt'; my $content=join('',<IN>); my $l=length($content); print "Number of bytes read: $l\n"; if($l>40) { print $content; Kill($pid); print "Ready.\n"; $x=<>; exit; } sleep(1); } while(1); sub handle_child_out { do { sysread CHILD_OUT, $content, 4092; if($content ne '') { open OUT,'>>out.txt'; print OUT $content; close OUT; } } while(1); } sub handle_child_err { do { sysread CHILD_ERR, $content, 4092; if($content ne '') { open OUT,'>>out.txt'; print OUT $content; close OUT; } } while(1); }
|
|---|