[so] CreateProcess

Octavian Purdila so@cursuri.cs.pub.ro
Tue, 2 Nov 2004 12:39:09 +0200


On Monday 01 November 2004 23:31, Catalin Alexandru wrote:
> > CreateProcess() este suficient. Modul de tratare a
> > cmd1|cmd2|cmd3 este identic cu cel cmd1&cmd2&cmd3, doar ca
> > trebuie sa setezi stdin si stdout corespunzator.
>
> De fapt problema se vede mai bine pe alt exemplu:
>
>  cmd1 && cmd2 & cmd3 && cmd4
>
> Din cate inteleg eu, arborele care o sa rezulte in urma parsarii o sa arate
> cam asa:
>
>            --- & ---
>           /         \
>          /           \
>         &&            &&
>        /  \          /  \
>       /    \        /    \
>    cmd1    cmd2  cmd3    cmd4
>
> Daca se incearca executarea din cadrul unui singur proces, prima comanda
> lansata
> va fi cmd1. Daca astept terminarea sa pentru a lansa cmd2 (ceea ce trebuie
> sa fac
> pentru ca "&&" e secventiala) nu o sa pot lansa cmd3 decat abia dupa ce
> lansez
> cmd2.
>
> Problema este ca cele doua ramuri care vin din radacina trebuie pornite
> deodata (adica
> cmd1 && cmd2 trebuie pornit o data cu cmd3 && cmd4). Treaba asta nu se
> poate face decat din doua procese diferite 

Se poate si altfel :D. Pornesti executia lui cmd1 si a lui cmd3. Cand se 
termina cmd1, in functie de codul de eroare executi cmd2. Cand se termina 
cmd3, in functie de codul de eroare executi cmd4. 



tavi