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

Raspunde prin e-mail lui