28.Comunicarea prin FIFO +«ntre procese Unix.txt

Embed Size (px)

Citation preview

28. Comunicarea prin FIFO ntre procese UnixFIFO (pipe cu nume) = un flux de date unidirectional, accesat prin intermediul unui fisierrezident in sistemul de fisiere-au nume si ocupa un loc in sistemul de fisiere-poate fi accesat de orice 2 procese, nu neaparat cu parinte comun-pe disc nu se stocheaza nici o data care trece prin canalul FIFO, acestea fiind stocatesi gestionate in buffer-ele nucleului sistemului de operare*Deosebiri intre pipe si FIFO:-suportul pt pipe este o portiune din memoria RAM gestionata de nucleu, in timp ce FIFO are ca suport discul magnetic-toate procesle care comunica printr0un pipe trebuie sa fie descendente ale procesului creator al canalului pipe, in timp ce pentru FIFO nu se cere nici o relatie intre procese*Creare FIFO: int mknod(char *numeFIFO, int mod, 0); int mkfifo(char *numeFIFO,int mod);sau cu una dintre comenzile shell: $ mknod numeFIFO p $ mkfifo numeFIFO*Stergere FIFO:-se poate face fie cu comanda shell rm numeFIFO, fie cu un apel sistem C unlink()-dupa ce e cret FIFO, el trebuie deschis pt citire sau scriere, folosind comanda open(0_RDONLY,O_WRONLY)*cLIENT/SERVER prin FIFO:-pt a se asigura comunicarea bidirectionala se folosesc 2 FIFO-uri-fiecare dintre ele primeste ca si parametri descriptorii de fisiere, presupuse deschise, prin care comunica cu partenerul