Revin si cu un &quot;screen&quot; al ce se intampla, pentru a reliefa mai bine (in paranteza dupa debug e threadID si la handle-uri sunt handle-urile (primul hRead, al doilea hWrite):<br><br>&gt; echo &quot;test&quot; | cat | nl<br>

[DEBUG][3484] Command successfully read: echo &quot;test&quot; | cat | nl<br><br>[DEBUG][3484] Parallel command detected<br>[DEBUG][3484] Piped Command detected.<br>[DEBUG][3484] Created pipe with handle (2016,1996)<br>[DEBUG][3484]   Created threads 3488 - 3492<br>

[DEBUG][3488] Thread started with command tree: 00322B20<br>[DEBUG][3488] Parallel command detected<br>[DEBUG][3488] Piped Command detected.<br>[DEBUG][3488] Created pipe with handle (1984,1976)<br>[DEBUG][3488]   Created threads 3496 - 3500<br>

[DEBUG][3492] Thread started with command tree: 00322B90<br>[DEBUG][3492] Simple command detected...<br>[DEBUG][3492] Verb:<br>                nl<br>[DEBUG][3492] Full parameters list: nl<br>[DEBUG][3492] Preparing redirections...<br>

[DEBUG][3492] ---------------------------------------------------------<br>[DEBUG][3492]   Closing IN handle 2016<br>[DEBUG][3496] Thread started with command tree: 00322A88<br>[DEBUG][3496] Simple command detected...<br>

[DEBUG][3496] Verb:<br>                echo<br>[DEBUG][3496] Full parameters list: echo  &quot;test&quot;<br>[DEBUG][3496] Preparing redirections...<br>[DEBUG][3496] ---------------------------------------------------------<br>

[DEBUG][3496]   Closing OUT handle 1976<br>[DEBUG][3500] Thread started with command tree: 00322B00<br>[DEBUG][3500] Simple command detected...<br>[DEBUG][3500] Verb:<br>                cat<br>[DEBUG][3500] Full parameters list: cat<br>

[DEBUG][3500] Preparing redirections...<br>[DEBUG][3500] ---------------------------------------------------------<br>     1  test<br>[DEBUG][3500]   Closing IN handle 1984<br>[DEBUG][3500]   Closing OUT handle 1996<br>[DEBUG][3496] ---------------------------------------------------------<br>

[DEBUG][3496] Process returned 0<br>[DEBUG][3488] Thread 0 finished with return value 0.<br><br><br clear="all">--<br>Cosmin<br>
<br><br><div class="gmail_quote">2011/5/25 Cosmin Stefan-Dobrin <span dir="ltr">&lt;<a href="mailto:cosminstefanxp@gmail.com">cosminstefanxp@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Salutare,<br><br>Am si eu o mica problema cu pipe-urile pe Windows si nu reusesc sa-mi dau seama ce are. Ei bine, ideea e ca pana acum totul ne merge bine, mai putin cazul in care avem mai mult de 2 pipe-uri inlantuite. Daca avem: &#39;echo ana | nl&#39; totul e ok. In schimb daca avem &#39;echo ana | cat | nl&#39;, operatia o face cu succes, dar nu se termina. Procesul lui echo se inchide, in schimb celelalte 2 nu. Deci probabil ele inca mai asteapta ceva pe Pipe-uri, desi eu zic ca le-am inchis cum trebuie (Altfel nu se termina nici pentru 2 pipe-uri).<br>



<br>Ideea e ca noi am folosit threaduri. Cand dam peste o comanda paralela, sunt create doua threaduri, fiecare ocupandu-se de o jumate de arbore. In fiecare moment fiecare thread (inclusiv cel principal) stie ce handle-uri are pentru in/out/err. Initial acestea sunt stdin/out/err, dar atunci cand creez un pipe, ii comunic thrreadului ca , de exemplu, out-ul lui e handle-ul cutare. Threadul, dupa ce va crea procesul ce executa comanda, daca stie ca un cap e pipe, il inchide. <br>



<br>Din codul de debug pe care il am se vede ca pe procesul parinte (cu threaduri cu tot) se inchid toate cele 4 capete ale celor 2 pipe-uri create (in cazul exemplului de mai sus), dar tot nu se inchid procesele spawn-uite. <br>



<br>Conteaza ordinea in care sunt inchise pipe-urile (atat timp cat sunt inchise de thread dupe ce creaza procesul comenzii si inainte sa il astepte)?<br>Exista vreun flag necesar pentru a trimite pe pipe EOF cand se inchide Handle-ul? <br>



<br>Thanks a lot,<br><font color="#888888">Cosmin<br><br>
</font></blockquote></div><br>