詳しく説明しましょう。
私はperlプログラムを持っているとしましょう
(これは恥知らずに perl http://perldoc.perl.org/perlfaq8.html#How-can-I-open-a-pipe-both-to-and-from-a-command%3fからコピーおよび編集されたものです )
use IPC::Open3;
use Symbol qw(gensym);
use IO::File;
local *CATCHOUT = IO::File->new_tmpfile;
local *CATCHERR = IO::File->new_tmpfile;
my $pid = open3(gensym, ">&CATCHOUT", ">&CATCHERR", "ping -t localhost");
#waitpid($pid, 0);
seek $_, 0, 0 for \*CATCHOUT, \*CATCHERR;
while( <CATCHOUT> ) {
print $_;
}
しかし、上記のプログラムの問題は、この場合、プログラム ping.exe に属する STDOUT の一種の readtoEnd() になり、すべてを一度に読み取れるようになることです。
しかし、私ができるようにしたいのは、STDOUT に書き出されているときに STDOUT を読み取ることです。
waitforpid() を削除すると、プログラムはすぐに終了するため、どちらも役に立ちません。
それは可能ですか?もしそうなら、正しい方向に向けてください。
更新:ドラッツ!!!! 私は逃した | シンボル...これは、出力をpingからperlスクリプトにパイプするために不可欠です!!!