On Fri, 11 Mar 2005, ANDONE Mures wrote:
> undeva pe drum se pierd date. Intrebarea mea: De ce? Si unde se pierd
> datele? In perl? Sau la redirectare?
> Eu cred ca la redirectare. Va rog sa cititi mai jos, am un exemplu.
La redirectare. Practic minunea asta de script forkuieste de
cite ori poate, citeste cite o linie in cite un proces copil dupa care
copilul iese.
In momentul in care tu faci redirectarea STDIN, STDOUT si STDERR
(si altele) sint mostenite de procesele copil, dar numai procesul tata
are outputul controlat intru totul de shellul bash. Restul scriu si ele
in acelasi filedescriptor insa nescriind sincron se pot pierde niste
linii pe drum.
Vezi mai jos:
> open(FIS, "$file") or die("Could not open $file: $!");
++:
select STDOUT; $| = 1;
> while(<FIS>)
Nu ma pot abtine in ciuda remarcii tale de la inceput: de ce nu
while ($line=<FIS>) ?? Ca faci mai jos inca o atribuire si apoi print
fix degeaba.
> print $line;
Eventual, pentru siguranta:
print STDOUT $line;
Pentru mai multe detalii perldoc -f open, perldoc -f select.
Sau foloseste STDERR in loc de STDOUT si redirectezi
filedescriptorul 2 in bash.
--
Any views or opinions presented within this e-mail are solely those of
the author and do not necessarily represent those of any company, unless
otherwise expressly stated.
---
Detalii despre listele noastre de mail: http://www.lug.ro/