2014-03-09 22:49 GMT+02:00 Istrate Roxana <[email protected]>:
> Ce se intampla in cazul comenzii ls -l | grep 'c' ? > Daca am creat un pipe pe care vreau sa-l folosesc intre parinte si > copil, > apoi fac un fork(), pentru a folosi pipe-ul corect, copilul (ls -l) va > inchide STDOUT_FILENO si-l va redirecta catre inputul lui 'grep c'. Din > cate am citit la un fork() se copiaza din parinte in copil tabela de > file > descriptori. Judecand dupa poza atasata, daca parintele/copilul ar > modifica > ce se afla la STDOUT_FILENO, i-ar fi modificata si celuilalt, iar in > comanda anterioara ar insemna ca daca as seta outputul lui ls -l la > grep > 'c' si outputl lui grep 'c' ar fi setat la inputul lui ceea ce nu pare > corect. Initial se copiaza tabela, dar dupa fork() modificarile de > tipul > (dup, dup2) pe file descriptorii comuni nu vor fi vizibili celuilalt > proces? > Bună, Roxana! Atenție, tabela de file descriptori se copiază, nu se folosește aceeași tabelă. După apelul fork() procesul copil va avea propria copie a tabelei de file descriptori, iar orice modificare (fie a părintelui sau a copilului) este făcută în tabela proprie și nu este vizibilă celuilalt proces. PS: te rog să specifici un subiect threadului[1] [1] http://ocw.cs.pub.ro/courses/so/info/lista-discutii#subjecte_sugestive Numai bine, -- Răzvan Crainea
_______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
