[so] intrebari

Octavian Purdila so@cursuri.cs.pub.ro
Fri, 5 Nov 2004 19:50:44 +0200


On Friday 05 November 2004 14:38, Mihai Mincu wrote:
> 1. Pentru o comanda de tipul:
>
> "... cmd1 & cmd2 & exit & cmd3"
> trebuie sa omor toate procesele ce se executa in paralel cu exit.
>
> din punctul meu de vedere exista 2 posibilitati:
>  a.) in primul proces creat la lansarea programului sa tin minte un
> vector cu toate pid-urile proceselor create pe parcursul rularii, si
> la exit sa fac kill pe toate.
> b.) Memorie partajata in care sa fie incluse toate pid-urile existente
> astfel incat sa pot face kill pe restul proceselor de oriunde.
>
> Care solutie trebuie folosita, sau daca nu ce alte solutii exista?
>

Nu trebuie sa faci kill, ci wait().

Eu as opta pentru

c) in procesul shell-ului tii minte toate pid-urile proceselor create, le 
astepti sa se termine si abia apoi iesi din shell 

Poti insa folosi si a) si b) cu observatia ca in loc de kill sa faci wait.

>
> 2. Pentru comanda:
>
> "cmd1 | cmd2 >test.txt | cmd3"
>
> La al doilea pipe nu mai am nimic pt ca totul a fost redirectat in
> fisier (redirectarea in fisiere are prioritate mai mare decat
> pipe-ul). Cum ar trebui tratata o asfel de eroare.
>

E eroarea utilizatorului, asa ca nu trebuie sa tratezi nimic special.


>
> 3. Cum are trebui tratat cazul urmator:
>
> "cat fis1 fis2 & rm fis1"
> in care apare race
>

La fel, race-ul e provocat de utilizator, nu e treaba ta.

> dar:  "cd /home/test & cd /etc" , "exit & exit"  ???
>

Acelasi lucru.

> In testarea temei se vor lua in considerare si asfel de cazuri speciale?
>
>

Nope. De altfel, o sa aveti testul, chiar daca foarte tarziu (ie maine dupa 
amiaza sau seara), asa ca o sa puteti testa si singuri.

tavi