Portál AbcLinuxu, 15. července 2025 05:02
$vystup = qx{echo $vstup|/usr/bin/muj_program}
neni reseni, protoze za 1. se mi nechce premyslet o escapovani a za 2. se to blbe portuje na Win...
open IN, "|/usr/bin/mujprogram"
open OUT, "/usr/bin/mujprogram|"
print IN $vstup
@output=<OUT>
ale unika mi PROC to takto chcete.
Vice man/perldoc perlipc
use Proc::Fork; use IO::Pipe; my $in = new IO::Pipe; my $out = new IO::Pipe; child { $in->reader; $out->writer; open STDIN, '<&=', $in; open STDOUT, '>&=', $out; exec; } parent { $in->writer; $out->reader; }
open2()
je spravna cesta (nepotrebuju stderr). Zda se ze to funguje, i kdyz na windonws jsem to jeste nestihl vyzkouset. Napred odladim na Linuxu a pak zkusim, co to dela na Win...
A kdyby to nekdo zkousel, tak dve kratke poznamky:
1. Bufferovany vystup... obcas se neco vytiskne dvakrat nebo ve spatnem poradi... $|=1
2. Dokud nezavru stdin filehandle (ten nove vytvoreny, samozrejme), tak volany podproces neskonci
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.