[so] [Tema1][WIndows] Testul 15

sabina batranu sabina_btrn at yahoo.com
Wed Mar 27 18:59:23 EET 2013





________________________________
 From: Adrian Sendroiu <molecula2788 at gmail.com>
To: sabina batranu <sabina_btrn at yahoo.com> 
Sent: Wednesday, March 27, 2013 5:22 PM
Subject: Re: [so] [Tema1][WIndows] Testul 15
 
sabina batranu <sabina_btrn at yahoo.com> writes:

>
> Salut,
>
> Incearca sa inchizi fiecare pipe imediat dupa ce ai creat procesul
> care il foloseste.
>
> Adrian
>
> Salut,
>
> Am incercat si tot nu merge. Am descoperit ca se blocheaza chiar la
> primul cat apelat, adica la " cat < big_file". Am verificat toate
> pipe-urile si sunt corect plasate, si fisierul de intrare exista si a
> fost deschis cu succes, procesul respectiv preluand handle-ul lui. Am
> inchid toate pipe-urile imediat dupa crearea procesului care le
> foloseste, iar fisierele de intrare/iesire le inchid imediat dupa ce
> procesul s-a terminat (dupa ce s-a trecut de wait) Tot degeaba. Imi
> moare pentru pipe-uri multiple cu incarcatura mare de transferat. De
> exemplu, pentru comanda "cat < file1 | cat | cat | cat | cat | cat |
> cat > file2"
>
> unde in file1 era scris doar un cuvant de 3 litere a functionat fara
> probleme
>
> dar pentru "cat < big_file | cat | cat | cat | cat | cat | cat >
> firstFIle"
>
> se blocheaza la primul cat in sensul ca il asteapta sa se termine la
> nesfarsit.  Si am asteptat destul de mult sa se termine in speranta ca
> dureaza mai mult sa citeasca big_file, dar am asteptat pana la urma
> cat asteptam sa se termine toate testele pe linux si tot nu a trecut
> de primul cat.  Any idea what might be wrong?
>
> Multumesc, Sabina

Salut,

Probabil se blocheaza deoarece pipe-ul are o dimensiune limitata. Daca
incerci sa scrii dupa ce s-a umplut, o sa te blochezi pana cand vine
cineva si citeste din pipe.

In cazul tau, daca pornesti comanda "cat < big_file" dupa care astepti
sa se termine, fara sa fi pornit si restul comenzilor (cat | cat ...),
asta ar putea fi problema. Deoarece avem un "big file", pipe-ul o sa se
umple, procesul cat o sa se blocheze, iar shell-ul la randul lui o sa se
blocheze asteptand procesul cat.

Adrian


Salut,

Da, am descoperit si eu problema asta intre timp, m-am asigurat ca ruleaza
toate celelalte procese cu pipe-urlie lor
 inainte sa pornesc procesul primului cat,
si acum  merge primul cat, dar se blocheaza al doilea :))
Am verificat si se inchid absolut toate handlerele de pipe folosite si ruleaza
toate procesele.
Problema asta ar putea fi de la faptul ca , inchizand pe parcurs handlere, in 
momentul cand creez noi pipe-uri, capetele vor purta vechile handlere. De
exemplu, am un pipe1 cu hout = 76 si hin = 80, rulez deja procesul cat care
isi asteapta output-ul de la restul, inchid handler-ul hin, si apoi creez urmatorul pipe,
pipe2, dar acesta va avea hin egal tot cu 80. Sa fie asta problema acum, ca am
handlere cu aceleasi numere?

Multumesc,
Sabin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20130327/b5df9ba3/attachment-0001.html>


More information about the so mailing list