[so] [Tema2][Windows] Pipeuri multiple
Alex Albu
alex.u.albu at gmail.com
Tue Apr 3 21:18:37 EEST 2018
Ok, mersi. Daca ma prind revin.
Seara faina!
On Tue, Apr 3, 2018, 21:04 Razvan Crainea <razvan.crainea at gmail.com> wrote:
>
>
> On Tue, Apr 3, 2018 at 8:46 PM Alex Albu <alex.u.albu at gmail.com> wrote:
>
>> Salut Razvan.
>>
>> Multumesc ca ti-ai aruncat o privire.
>>
>> Am raspuns mai jos.
>>
>> Mersi
>>
>>
>> 2018-04-03 20:21 GMT+03:00 Razvan Crainea <razvan.crainea at gmail.com>:
>> > Salutare, Alex!
>> >
>> > Uitându-mă pe codul tău observ două probleme:
>> > * pentru unele comenzi, redirectezi INPUT-ul sau OUTPUT-ul către ceva
>> > invalid
>>
>> Daca te referi la setarea INVALID_HANDLE_VALUE care e facuta in
>> do_pipe, se afla acolo pentru a arata daca e nevoie de o redirectare
>> (similar cu comportamentul out, in err din structura arborelui de
>> comanda). Functia RedirectHandle nu face nicio redirectare in cazul
>> acestei valori. Daca e vorba de altceva tot imi scapa :(
>>
>
> 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.
>
>
>>
>> > * nu tratezi OK comenzile înlănțuite prin PIPE-uri
>>
>> E posibil sa fie adevarat pentru mai mult de 2 pipeuri (caci n-am
>> apucat sa testez), dar pentru 2 imi pare in regula si comportamentul
>> ar trebui sa fie exact cel descris de tine mai jos.
>> Pipeurile se creaza in ordine de la parinte in jos si comanda dreapta
>> de la un anumit nivel is va lua capatul de scriere din pipeul de la
>> parinte daca e cazul. Astfel Cmd2 va avea si input si output
>> redirectat, iar 1 si 3 doar scris, respectiv citit.
>>
>
> Ar trebui să testezi :).
>
>
>>
>> >
>> > Spre exemplu, la comanda cmd1 | cmd2 | cmd3:
>> > * cmd1: handle-ul de citire ar trebui să fie cel default, iar cel de
>> scriere
>> > să fie redirectat către capătul de scriere al pipe-ului 1
>> > * cmd2: handle-ul de citire ar trebui să fie redirectat către capătul de
>> > citire al pipe-ului 1, iar cel de scriere către capătul de scriere al
>> > pipe-ului 2
>> > * cmd3: handle-ul de cititre ar trebui să fie redirectat către capătul
>> de
>> > citire al pipe-ului 2, iar cel de scrie către handle-ul default
>> >
>> > Încearcă să-ți afișezi la crearea fiecărui proces ce handle-uri are
>> fiecare
>> > comandă.
>>
>> Aveam informatia asta in debug pentru inchiderea handleurilor dupa
>> redirectare. Am pus acum explicit pentru creare si functia de
>> redirectare si, in continuare, pare in regula
>>
>> >
>> > Numai bine,
>> > Răzvan
>> >
>> > On Tue, Apr 3, 2018 at 6:18 PM Alex Albu via so <so at cursuri.cs.pub.ro>
>> > wrote:
>> >>
>> >> Salut.
>> >>
>> >>
>> >> Ma straduiesc fara succes sa implementez pipeurile multiple in
>> >> varianta de Windows a temei.
>> >> Desi in teorie pare sa fie totul in regula (procesele de pipe pornite
>> >> unul dupa altul, inchise capetele pipeurilor etc) de la 2 pipeuri in
>> >> sus, procesul al doilea care si citeste si scrie intr-un pipe intoarce
>> >> eroare sau blocheaza.
>> >>
>> >> Din nou orice sugestie e bine-venita :)
>> >>
>> >> Userul de gitlab e tmp_stud19.
>> >>
>> >> Multumesc
>> >>
>> >> Alex Albu
>> >> _______________________________________________
>> >> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20180403/77b69155/attachment.html>
More information about the so
mailing list