<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-03-09 22:49 GMT+02:00 Istrate Roxana <span dir="ltr"><<a href="mailto:istrateroxana2006@gmail.com" target="_blank">istrateroxana2006@gmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Ce se intampla in cazul comenzii ls -l | grep 'c' ? </span><div>

<span style="font-family:arial,sans-serif;font-size:13px">    Daca am creat un pipe pe care vreau sa-l folosesc intre parinte si copil,</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">    apoi fac un fork(), pentru a folosi pipe-ul corect, copilul (ls -l) va</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">    inchide STDOUT_FILENO si-l va redirecta catre inputul lui 'grep c'. Din</span><br style="font-family:arial,sans-serif;font-size:13px">


<span style="font-family:arial,sans-serif;font-size:13px">    cate am citit la un fork() se copiaza din parinte in copil tabela de file</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">    descriptori. Judecand dupa poza atasata, daca parintele/copilul ar modifica</span><br style="font-family:arial,sans-serif;font-size:13px">


<span style="font-family:arial,sans-serif;font-size:13px">    ce se afla la STDOUT_FILENO, i-ar fi modificata si celuilalt, iar in</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">    comanda anterioara ar insemna ca daca as seta outputul lui ls -l la grep</span><br style="font-family:arial,sans-serif;font-size:13px">


<span style="font-family:arial,sans-serif;font-size:13px">    'c' si outputl lui grep 'c' ar fi setat la inputul lui ceea ce nu pare</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">    corect. Initial se copiaza tabela, dar dupa fork() modificarile de tipul</span><br style="font-family:arial,sans-serif;font-size:13px">


<span style="font-family:arial,sans-serif;font-size:13px">    (dup, dup2) pe file descriptorii comuni nu vor fi vizibili celuilalt proces?</span><br></div></div>
</blockquote></div><div class="gmail_extra"><br></div>Bună, Roxana!</div><div class="gmail_extra"><br></div><div class="gmail_extra">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.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">PS: te rog să specifici un subiect threadului[1]</div><div class="gmail_extra">[1] <a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii#subjecte_sugestive">http://ocw.cs.pub.ro/courses/so/info/lista-discutii#subjecte_sugestive</a></div>

<div class="gmail_extra"><div><br></div><div>Numai bine,</div>-- <br>Răzvan Crainea
</div></div>