[so] [Tema2][Windows] Pipeuri multiple
Alex Albu
alex.u.albu at gmail.com
Tue Apr 3 20:45:25 EEST 2018
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 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.
>
> 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
More information about the so
mailing list