PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` #!/usr/bin/perl ## Submitted by Borislav Deianov ## This stresses the blocking write to see if it blocks. use Fcntl; use IO::Pty; use IPC::Run qw(run); sub makecmd { return ['perl', '-e', ', print "\n" x '.$_[0].'; while(){last if /end/}']; } pipe R, W; fcntl(W, F_SETFL, O_NONBLOCK); while (syswrite(W, "\n", 1)) { $pipebuf++ }; print "pipe buffer size is $pipebuf\n"; $in = "\n" x ($pipebuf * 3) . "end\n"; print "reading from scalar via pipe... "; run(makecmd($pipebuf * 3), '<', \$in, '>', \$out); print "done\n"; print "reading from code via pipe... "; run(makecmd($pipebuf * 3), '<', sub { $t = $in; undef $in; $t}, '>', \$out); print "done\n"; $pty = IO::Pty->new(); $pty->blocking(0); $slave = $pty->slave(); while ($pty->syswrite("\n", 1)) { $ptybuf++ }; print "pty buffer size is $ptybuf\n"; $in = "\n" x ($ptybuf * 3) . "end\n"; print "reading via pty... "; run(makecmd($ptybuf * 3), '', \$out); print "done\n";