in reply to open3 hangs
$pid = open3(\*CHLDIN, \*CHLDOUT, \*CHLDERR, @$cmd); close(CHLDIN);
# timeout handling { local $@ = ""; eval { local $SIG{ALRM} = sub { die("alarm\n") }; # "\n" required alarm(3); # potentially long operation chomp($input = <STDIN>); alarm(0); 1; } or do { die($@) unless $@ eq "alarm\n"; # timed out warn("No answer for three seconds.\n"); $input = ""; } }
|
|---|