<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-03-26 16:44 GMT+02:00 Ioan Mihail Stan <span dir="ltr"><<a href="mailto:stanioanmihail@gmail.com" target="_blank">stanioanmihail@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div><div class="h5">Am si eu o problema legata de testul 15. Nu reusesc sa ma prind ce nu fac bine in cod legat de pipe-uri multiple. Aparent pentru comanda cat < big_file | cat | cat imi crapa al treilea cat. <br>
</div></div><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><div><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"><div>Any hint ?<br></div><div>- am urmat cativa pasi indicati pe IRC:<br></div><div> * asteptarea proceselor abia dupa crearea tuturor<br></div><div> * inchiderea handlerelor asociate pipeului undeva intre wait si comanda<br>
</div><div><br></div>In alta ordine de idei, testerul local nu stie sa opreasca procesul in caz ca ruleaza un timp <br clear="all"><div><div><div><div>prea mare si din acest motiv nu am vrut sa ingreunez coada de testare de pe vmchecker cu varianta mea de windows. Local nu ajung la score report! In cazul in care nu reusesc sa gasesc eroarea de cod care imi provoaca blocarea in testul 15, ce e de facut in legatura cu testerul?</div>
</div></div></div></div></blockquote><div><br></div></div></div><div>Salut!</div><div><br></div><div>Nu se poate face nimic cu testerul. Atât timp cât implementarea ta este corectă, comanda respectivă ar trebui să meargă.</div>
<div>
Cel mai probabil, ultimul cat nu se închide din cauză că un alt proces încă mai are capătul de scriere deschis. Presupunerea mea este că ori procesul părinte, ori procesul celui de-al doilea cat.</div><div>Încearcă să afișezi pid-urile tuturor proceselor (inclusiv ale minishell-ului) și să urmărești cu lsof[1] ce file descriptori are deschis fiecare pid.</div>
<div><br></div><div>[1] <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?lsof+8" target="_blank">http://unixhelp.ed.ac.uk/CGI/man-cgi?lsof+8</a></div></div>
<br clear="all"><div>Baftă!</div><span><font color="#888888">-- <br>Răzvan Crainea
</font></span></div></div>
<br></blockquote></div></div><div>Salut Razvan,<br></div></div><br></div><div class="gmail_extra">Tema la care am probleme este varianta Windows. Din pacate lsof nu este o varianta in conditiile in care cygwin are un numar limitat de comenzi, iar instalarea unor pachete noi presupune reinstalarea consolei. Am incercat si cu pipe de dimensiune mai mare de "0", suficient de mare zic eu, insa tot nu merge ...aparent merge doar pe teste mici dar pe testul 15 crapa si nu ajung la score report. <br>
</div></div></blockquote><div><br></div><div>Mărirea dimensiunii pipe-ului nu scalează (ce se întâmplă la un cat pe un fișier1 GB?), deci nu este o soluție completă. _Nu_ vrem să implementați shell-ul doar să treacă testele. Corect este să lăsați dimensiunea default și să folosiți cum trebuie capetele pipe-urilor.</div>
<div>Încearcă să-ți printezi ce handlere ai deschise și când anume se deschid.</div><div>Ai grijă la situații de genul următor:</div><div><br></div><div>HANDLER pipe = CreatePipe()</div><div><br></div><div>CreateProcess(1)</div>
<div><br></div><div>CreateProcess(2)</div><div><br></div><div>în acest moment, capătul de scriere al pipe-ului este deschis de 3 ori: o dată din procesul părinte, o dată din procesul 1 și o dată din procesul 2. Din moment ce doar procesul 1 scrie, celelalte două procese ar trebui să închidă capătul de write.</div>
<div><br></div><div>Baftă!</div></div><div><br></div>-- <br>Răzvan Crainea
</div></div>