[so] [Tema2][Windows] Pipeuri multiple

Razvan Crainea razvan.crainea at gmail.com
Tue Apr 3 21:04:33 EEST 2018


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/8a05ed21/attachment-0001.html>


More information about the so mailing list