in reply to Re^2: open2 with windows diskpart
in thread open2 with windows diskpart
Worked fine for me simply by adding the missing "\n" I mentioned.
I had problem detecting the prompt because it's not sent until the line is ended (which doesn't happen until someone types since the output appears to be line buffered). I solved that by forcing the prompt to show up twice.
use strict; use warnings; use IO::Handle qw( ); use IPC::Open2 qw( open2 ); sub wait_for_prompt { my ($to_chld, $fr_chld) = @_; # Force two prompts to appear. print $to_chld "\n"; my $count; while (<$fr_chld>) { print "$.: $_"; last if /^DISKPART> $/ && ++$count == 2; } } { my $pid = open2(my $fr_chld, my $to_chld, 'diskpart'); #print $to_chld "\n"; #wait_for_prompt($to_chld, $fr_chld); print $to_chld "list disk\n"; wait_for_prompt($to_chld, $fr_chld); print $to_chld "exit\n"; wait_for_prompt($to_chld, $fr_chld); close $to_chld; waitpid($pid, 0); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: open2 with windows diskpart
by Anonymous Monk on Jun 17, 2009 at 02:50 UTC | |
by ikegami (Patriarch) on Jun 17, 2009 at 05:18 UTC | |
by wxfield (Novice) on Jun 17, 2009 at 12:48 UTC |