<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, Apr 3, 2018 at 8:46 PM Alex Albu <<a href="mailto:alex.u.albu@gmail.com">alex.u.albu@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Salut Razvan.<br>
<br>
Multumesc ca ti-ai aruncat o privire.<br>
<br>
Am raspuns mai jos.<br>
<br>
Mersi<br>
<br>
<br>
2018-04-03 20:21 GMT+03:00 Razvan Crainea <<a href="mailto:razvan.crainea@gmail.com" target="_blank">razvan.crainea@gmail.com</a>>:<br>
> Salutare, Alex!<br>
><br>
> Uitându-mă pe codul tău observ două probleme:<br>
> * pentru unele comenzi, redirectezi INPUT-ul sau OUTPUT-ul către ceva<br>
> invalid<br>
<br>
Daca te referi la setarea INVALID_HANDLE_VALUE care e facuta in<br>
do_pipe, se afla acolo pentru a arata daca e nevoie de o redirectare<br>
(similar cu comportamentul out, in err din structura arborelui de<br>
comanda). Functia RedirectHandle nu face nicio redirectare in cazul<br>
acestei valori. Daca e vorba de altceva tot imi scapa :(<br></blockquote><div><br></div><div>Nu la asta mă refer, dar nici nu pot să-ți arăt exact unde (cred eu că) este problema. Verifică exact ce redirectări faci când înlănțuiești comenzi prin pipe.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> * nu tratezi OK comenzile înlănțuite prin PIPE-uri<br>
<br>
E posibil sa fie adevarat pentru mai mult de 2 pipeuri (caci n-am<br>
apucat sa testez), dar pentru 2 imi pare in regula si comportamentul<br>
ar trebui sa fie exact cel descris de tine mai jos.<br>
Pipeurile se creaza in ordine de la parinte in jos si comanda dreapta<br>
de la un anumit nivel is va lua capatul de scriere din pipeul de la<br>
parinte daca e cazul. Astfel Cmd2 va avea si input si output<br>
redirectat, iar 1 si 3 doar scris, respectiv citit.<br></blockquote><div><br></div><div>Ar trebui să testezi :).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
> Spre exemplu, la comanda cmd1 | cmd2 | cmd3:<br>
> * cmd1: handle-ul de citire ar trebui să fie cel default, iar cel de scriere<br>
> să fie redirectat către capătul de scriere al pipe-ului 1<br>
> * cmd2: handle-ul de citire ar trebui să fie redirectat către capătul de<br>
> citire al pipe-ului 1, iar cel de scriere către capătul de scriere al<br>
> pipe-ului 2<br>
> * cmd3: handle-ul de cititre ar trebui să fie redirectat către capătul de<br>
> citire al pipe-ului 2, iar cel de scrie către handle-ul default<br>
><br>
> Încearcă să-ți afișezi la crearea fiecărui proces ce handle-uri are fiecare<br>
> comandă.<br>
<br>
Aveam informatia asta in debug pentru inchiderea handleurilor dupa<br>
redirectare. Am pus acum explicit pentru creare si functia de<br>
redirectare si, in continuare, pare in regula<br>
<br>
><br>
> Numai bine,<br>
> Răzvan<br>
><br>
> On Tue, Apr 3, 2018 at 6:18 PM Alex Albu via so <<a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>><br>
> wrote:<br>
>><br>
>> Salut.<br>
>><br>
>><br>
>> Ma straduiesc fara succes sa implementez pipeurile multiple in<br>
>> varianta de Windows a temei.<br>
>> Desi in teorie pare sa fie totul in regula (procesele de pipe pornite<br>
>> unul dupa altul, inchise capetele pipeurilor etc) de la 2 pipeuri in<br>
>> sus, procesul al doilea care si citeste si scrie intr-un pipe intoarce<br>
>> eroare sau blocheaza.<br>
>><br>
>> Din nou orice sugestie e bine-venita :)<br>
>><br>
>> Userul de gitlab e tmp_stud19.<br>
>><br>
>> Multumesc<br>
>><br>
>> Alex Albu<br>
>> _______________________________________________<br>
>> <a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a><br>
</blockquote></div></div>