[so] (no subject)
Razvan Crainea
razvan.crainea at gmail.com
Mon Mar 10 07:22:04 EET 2014
2014-03-09 22:49 GMT+02:00 Istrate Roxana <istrateroxana2006 at gmail.com>:
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20140310/4a0ce4ea/attachment.html>
More information about the so
mailing list