<table cellspacing='0' cellpadding='0' border='0' ><tr><td valign='top' style='font: inherit;'>Cele N procese se fac in paralel prin faptul ca nu fac waitpid dupa fiecare ci la primul op | astept toti copiii.<br>Asa am implementat si &amp; si este cat se poate de paralel. Verificat. Plus ca am zis...nu ramane agatat,blocat.<br><br>Ideea pe care am implementat-o se bazeaza pe faptul ca pipe e cel mai prioritar operator si se afla cel mai adanc in arbore.<br><br>Chiar nu stiu ce ar putea sa aiba... :(<br><br>Alex.<br><br>--- On <b>Fri, 7/18/08, Mircea Gherzan <i>&lt;mgherzan@anaconda.cs.pub.ro&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;">From: Mircea Gherzan &lt;mgherzan@anaconda.cs.pub.ro&gt;<br>Subject: Re: [so] [Tema1][Linux] Problema la pipe<br>To: so@cursuri.cs.pub.ro<br>Date: Friday, July 18, 2008, 1:19 AM<br><br><pre>Alex wrote:<br>&gt; Dupa ce l-am zapacit prima data am zis
 ca reiau si am gandit altfel<br>&gt; programul,am facut si un prg de test de 50 linii de cod si<br>&gt; mergea...dar in tema acceasi idee nu merge. Iata cum am gandit: Cand<br>&gt; intalnesc primul operator pipe creez recursiv pentru toate<br>&gt; subnodurile lui care nu sunt comenzi simple cate 2 file descriptori<br>&gt; in aux(din structura arborelui). Apoi dau drumu la executia<br>&gt; proceselor in ordine. Dupa executia comenzilor din primul op pipe<br>&gt; distrug adica dau free la toti file descriptorii alocati (ii inchid<br>&gt; inainte),fac waitpid(-1,&amp;status,0) pt a astepta toti copiii. In copil<br>&gt; tin cont si fac toate legaturile necesare intre procese__ inainte de<br>&gt; exec (le-am printat...sunt ok...zic eu :D ).Dupa ce fac legaturile<br>&gt; inchid in copil toate celelalte pipe-uri(s-au copiat din parinte unde<br>&gt; erau deschise deja).<br><br>Pentru o comanda precum cmd1 | cmd2 | cmdN ,  cele N procese trebuie<br>executate in
 paralel, si nu "in ordine". Capacitate unui pipe este<br>evident finita (64K), iar eventuale apeluri ar putea  write() pot bloca<br>pana la preluarea de octeti.<br><br><br>-- <br>Mircea Gherzan<br>Faculty of Automatic Control and Computers<br>Politehnica University of Bucharest<br>_______________________________________________<br>so mailing list<br>so@cursuri.cs.pub.ro<br>http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</pre></blockquote></td></tr></table><br>