<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:10pt"><div><span></span></div><div><br></div> <div style="font-family: arial, helvetica, sans-serif; font-size: 10pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> <hr size="1"> <b><span style="font-weight:bold;">From:</span></b> Adrian Sendroiu <molecula2788@gmail.com><br> <b><span style="font-weight: bold;">To:</span></b> sabina batranu <sabina_btrn@yahoo.com> <br> <b><span style="font-weight: bold;">Sent:</span></b> Wednesday, March 27, 2013 5:22 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [so] [Tema1][WIndows] Testul 15<br> </font> </div> <br>
sabina batranu <<a ymailto="mailto:sabina_btrn@yahoo.com" href="mailto:sabina_btrn@yahoo.com">sabina_btrn@yahoo.com</a>> writes:<br><br>><br>> Salut,<br>><br>> Incearca sa inchizi fiecare pipe imediat dupa ce ai creat procesul<br>> care il foloseste.<br>><br>> Adrian<br>><br>> Salut,<br>><br>> Am incercat si tot nu merge. Am descoperit ca se blocheaza chiar la<br>> primul cat apelat, adica la " cat < big_file". Am verificat toate<br>> pipe-urile si sunt corect plasate, si fisierul de intrare exista si a<br>> fost deschis cu succes, procesul respectiv preluand handle-ul lui. Am<br>> inchid toate pipe-urile imediat dupa crearea procesului care le<br>> foloseste, iar fisierele de intrare/iesire le inchid imediat dupa ce<br>> procesul s-a terminat (dupa ce s-a trecut de wait) Tot degeaba. Imi<br>> moare pentru pipe-uri multiple cu incarcatura mare de transferat. De<br>> exemplu, pentru comanda
"cat < file1 | cat | cat | cat | cat | cat |<br>> cat > file2"<br>><br>> unde in file1 era scris doar un cuvant de 3 litere a functionat fara<br>> probleme<br>><br>> dar pentru "cat < big_file | cat | cat | cat | cat | cat | cat ><br>> firstFIle"<br>><br>> se blocheaza la primul cat in sensul ca il asteapta sa se termine la<br>> nesfarsit. Si am asteptat destul de mult sa se termine in speranta ca<br>> dureaza mai mult sa citeasca big_file, dar am asteptat pana la urma<br>> cat asteptam sa se termine toate testele pe linux si tot nu a trecut<br>> de primul cat. Any idea what might be wrong?<br>><br>> Multumesc, Sabina<br><br>Salut,<br><br>Probabil se blocheaza deoarece pipe-ul are o dimensiune limitata. Daca<br>incerci sa scrii dupa ce s-a umplut, o sa te blochezi pana cand vine<br>cineva si citeste din pipe.<br><br>In cazul tau, daca pornesti comanda "cat < big_file" dupa care
astepti<br>sa se termine, fara sa fi pornit si restul comenzilor (cat | cat ...),<br>asta ar putea fi problema. Deoarece avem un "big file", pipe-ul o sa se<br>umple, procesul cat o sa se blocheze, iar shell-ul la randul lui o sa se<br>blocheze asteptand procesul cat.<br><br>Adrian<br><br><br>Salut,<br><br>Da, am descoperit si eu problema asta intre timp, m-am asigurat ca ruleaza<br>toate celelalte procese cu pipe-urlie lor
inainte sa pornesc procesul primului cat,<br>si acum merge primul cat, dar se blocheaza al doilea :))<br>Am verificat si se inchid absolut toate handlerele de pipe folosite si ruleaza<br>toate procesele.<br>Problema asta ar putea fi de la faptul ca , inchizand pe parcurs handlere, in <br>momentul cand creez noi pipe-uri, capetele vor purta vechile handlere. De<br>exemplu, am un pipe1 cu hout = 76 si hin = 80, rulez deja procesul cat care<br>isi asteapta output-ul de la restul, inchid handler-ul hin, si apoi creez urmatorul pipe,<br>pipe2, dar acesta va avea hin egal tot cu 80. Sa fie asta problema acum, ca am<br>handlere cu aceleasi numere?<br><br>Multumesc,<br>Sabin<br> </div> </div> </div></body></html>