[so] [Tema1][Linux] Problema la pipe

Alex alexeurope2002 at yahoo.com
Fri Jul 18 11:18:48 EEST 2008


Cele N procese se fac in paralel prin faptul ca nu fac waitpid dupa fiecare ci la primul op | astept toti copiii.
Asa am implementat si & si este cat se poate de paralel. Verificat. Plus ca am zis...nu ramane agatat,blocat.

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.

Chiar nu stiu ce ar putea sa aiba... :(

Alex.

--- On Fri, 7/18/08, Mircea Gherzan <mgherzan at anaconda.cs.pub.ro> wrote:
From: Mircea Gherzan <mgherzan at anaconda.cs.pub.ro>
Subject: Re: [so] [Tema1][Linux] Problema la pipe
To: so at cursuri.cs.pub.ro
Date: Friday, July 18, 2008, 1:19 AM

Alex wrote:
> Dupa ce l-am zapacit prima data am zis ca reiau si am gandit altfel
> programul,am facut si un prg de test de 50 linii de cod si
> mergea...dar in tema acceasi idee nu merge. Iata cum am gandit: Cand
> intalnesc primul operator pipe creez recursiv pentru toate
> subnodurile lui care nu sunt comenzi simple cate 2 file descriptori
> in aux(din structura arborelui). Apoi dau drumu la executia
> proceselor in ordine. Dupa executia comenzilor din primul op pipe
> distrug adica dau free la toti file descriptorii alocati (ii inchid
> inainte),fac waitpid(-1,&status,0) pt a astepta toti copiii. In copil
> tin cont si fac toate legaturile necesare intre procese__ inainte de
> exec (le-am printat...sunt ok...zic eu :D ).Dupa ce fac legaturile
> inchid in copil toate celelalte pipe-uri(s-au copiat din parinte unde
> erau deschise deja).

Pentru o comanda precum cmd1 | cmd2 | cmdN ,  cele N procese trebuie
executate in paralel, si nu "in ordine". Capacitate unui pipe este
evident finita (64K), iar eventuale apeluri ar putea  write() pot bloca
pana la preluarea de octeti.


-- 
Mircea Gherzan
Faculty of Automatic Control and Computers
Politehnica University of Bucharest
_______________________________________________
so mailing list
so at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20080718/9c027fb4/attachment.htm 


More information about the so mailing list