Sunteți pe pagina 1din 9

Teorie:

1. Definiti SO. Categorii de resurse. Categorii de utilizatori


2. Determinati numarul de accese la disc necesare pentru a citi blocul in care se gaseste octetul
200000 din fisierul dat cu numele de cale ../../data/work.dat.
Un bloc are 2 KB, adresa de sector ocupa 4B, continutul directorului curent e in memorie si se
considera ca e necesar un acces separat la disk pt citirea fiecarui inod.
3. Apelurile fork si vfork.
4. Scrieti o procedura shell care afiseaza numele fisierelor obisnuite din directoarele date ca
argumente in linia de comanda. Procedura lucreaza recursiv si trateaza ca eroare un argument
care nu e director. Se prelucreaza toate argumentele din linia de comanda.

Probleme:
1. Scrieti un program care afiseaza al 100-lea (daca exista) caracter din toate fisierele obisnuite
din subarborele de directoare incepand cu directorul radacina.

2. Scrieti un program care citeste dintr-un fisier linii continand cate 50 de numere intregi . Pentru
fiecare linie, intr-un thread separat, programul determina minimul si maximul. In final, programul
va determina cel mai mare minim si cel mai mic maxim si le va afisa impreuna cu numarul liniei
pe care au aparut.

Randul 2:
Teorie:
1. Enumerati si descrieti succint 8 directoare din radacina UNIX (asa ceva)
2. Comenzile shell break si continue
3. Apelul sistem exec.
4. Scrieti o procedura shell care citeste din fisierul standard de intrare cate un sir de caractere
considerat nume de cale. Se cauta daca in sistemul de fisiere exista acel nume de cale, si daca
acesta reprezinta un director, se afiseaza numele si numarul de legaturi simbolice din director.
Altfel se afiseaza numele de cale citit si tipul fisierului reprezentat. Executia procedurii se termina
la sfarsitul fisierului standard de intrare sau prin intrerupere (CTRL+C).

1) sa sa scrie folosind functi unix si apeluri de sistem un program C care numara toate link-urile
din subarborele unui director dat in linia de comanda.

2) Se da un fisier text cu numere (de ex. pe fiecare linie un numar), numere cuprinse intre 1 si
255 inclusiv.

Se va scrie un program care se va apela sub forma: ./program fisier N

Unde fisier e numele fisierului, si N este o constanta reprezentand numarul de procese fiu care
vor fi folosite in paralel pentru a determina numarul maxim din fisier, dupa cum urmeaza:

Procesul parinte porneste N copii, in fisier totdeauna vor fi mai mult de N numere. Citeste primul
numar, il trimite fiului 1, citeste al doilea, fiului 2, citeste pana la al N-lea numar, il da fiului N,
citeste N+1, il da fiului 1 (deci e circular). Comunicatie parinte-fiu se face prin pipes.

Fiecare fiu citeste din pipe numerele, si determina maximul. La final, va returna parintelui (prin
valoarea de iesire din proces) maximul numerelor pe care el le-a primit. Parintele asteapta dupa
fiecare fiu sa se termine, si determina maximul din valorile maxime partiale returnate de fiu. Il
afiseaza si ceau. Cu alte cuvinte, fiecare fiu returneaza un maxim partial, prin exit, si parintele cu
wait/waitpid il capteaza, si determina cel mai mare din maximele partiale si il afiseaza.

Ora 12
Teorie:

1. Harti memorie ibm mvs si digital vms


2. Structuri ciclice shell (adica for, while, until)
3. apeluri sistem nefiabile (sau fiabile??? nu mai stiu, corectati-ma daca e cazul)
4. un shell care numara recursiv toate subdirectoarele din directorul dat ca
argument la tastatura

Probleme:

1. sa se numere (recursiv) toate fisierele din directorul curent care au sufixul .sh,(si sa se
calculeze dimensiunea totala a acestora), din directorul dat ca argument la apelarea programului.

2. Se fac doua programe care se apeleaza astfel:


afiseaza fisier
count fisier1, fisier2,.., fisierN
Primul program afiseaza continutul fisierul primit ca argument la iesirea standard.
Al doilea program va lansa N procese (N=nr de fisiere argumente) care afiseaza continutul
fisierelor cu ajutorul programului "afiseaza". In parinte citesti din pipe (ca se afiseaza in pipe) si se
numara vocalele. Numarul vocalelor si valoarea returnata de procesele fii se scriu intr-un fisier
results.txt, care poate sa existe deja.

29.01.2006
Randul 1.

Teorie:

1. Responsabilitatea unui sistem de operare


2. Substitutii efectuate de shell
3. Apelurile sistem open, close, lseek, read, write
4. Scrieti o procedura shell, care determina subdirectorul cu numar maxim de intrari din fiecare
director dar ca argument (nerecursiv)

Probleme:

1. Sa se scrie un program C care foloseste functiile de biblioteca si apelurile sistem UNIX si


primeste ca argument in linia de comanda un nume de director si un cuvant. Programul sterge
toate fisierele obisnuite ale caror nume incep cu cuvantul dat, aflate in primul director dat ca
argument sau, recursiv, in arborele de directoare si fisiere a carui radacina este acesta.
2. Sa se scrie un program C care foloseste functiile biblioteca si apelurile sistem UNIX care
functioneaza dupa urmatorul scenariu:
Procesul initial creaza trei procese fiu care vor rula in paralel si primeste de la acesra date
prin intermediul a trei pipe-uri (parintele baleaza pipe-urile, citind pe rand cate un caracter din
fiecare). Procesele fiu citesc din cate un fisier text caracterele pe care le trimite parintelui. Daca
un proces fiu intalneste caracaterul "$" in fisier, trimite parintelui un semnal.
Parintele afiseaza continuu caracterele majuscule primite de la fii. Sistemul de procese se
termina in momentul in care fiii au terminat de transmis sau daca parintele a primut semnal de la
acestia cel putin o data.

Subiectul 1

1. Harti de memorie pentru sistemele MS-DOS si UNIX (1p)


2. Comenzile break si continue in interpretoarele de comenzi shell (1p)
3. Semnale fiabile: definitii, apelurile kill si sig_action (2p)
4. Scrieti o procedura shell care determina si afiseaza numarul de linii goale din fisierele cu
sufixul .txt continute in fiecare director al carui nume de cale se citeste din fisierul standard de
intrare. Se semnalizeaza eroare daca numele nu e director. Executia procedurii se termina cand
se ajunge la sfarsitul fisierului de intrare. (2p)
Pentru promovare trebuie minim 3p la teorie si minim 2p la probleme.

Subiectul 2

1. Rolul sistemului de operare.


2. Alocarea i-nodurilor si blocurilor
3. Functiile exec.
4. shellscript pentru fiecare din argumentele date la lansarea programului;
a. se testeaza daca e nume da cale, daca nu e se semnaleaza eroare
b. daca e fisier obisnuit, daca se termina cu sufixul .bak se sterge
c. daca e director, se parcurge recursiv si se sterg fisierele .bak
d. pt alte tipuri de fisiere se afiseaza tipul

Probleme
1. [1.5 p]
Sa se scrie un program C care parcurge recursive un director (dat ca singurul paramentru al
progr; daca nu avem param atunci se parcurge dir curent) contorizand numarul de fisiere care se
term cu sufixul .c si calculand dimensiunea totala a acestor fisiere. La terminarea progr se
afiseaza aceste informatii la iesirea standard.

Obs. Nu se admite folosirea comenzilor externe in rezolvare

2. [2.5 p]
Sa se scrie un progr C care simuleaza o retea simplificata de calculatoare conectate in inel.
Adresa 0
Statie (proces)

Adresa 1 Adresa 3
Statie (proces) Statie (proces)

Adresa 2

Statie (proces)
Conexiune
unidirectionala
(pipe)

Reteaua contine un numar de N>1 statii, unde N este dat ca param la lansarea in executie a
progr. Fiecare statie este simulate printr-un process si are o adresa unica (ex. 0,1,2..N-1). Statiile
(procesele) sunt conectate intre ele prin pipe-eri, ca in fig. (pt. N=4)

In retea circula in mod continuu un singur pachet de dimens fixa cu urm struct:
- stare: poate avea 2 val
o liber = pachetul nu contine nici un mesaj, situatie in care celelalte campuri nu au
semnificatie (mai putin S)
o ocupat = pachetul contine un mesaj
- adresa statiei care a emis mesajul
- adresa statiei destinatie a mesajulului
- continutul mesajului (20 char)
- S numarul de starii care mai au mesaje de transmis

Programul principal va crea pipe-urile necesare, va crea procesele corespunzatoare statiilor, va


introduce in reteaa pachetul in stare libera si cu campul S initializat cu N si apoi va astepta
terminarea tuturor proceselor create.

Fiecare statie I transmite un numar Mi de mesaje (Mi este stabilit aleator pt. fiecare statie in parte
si numai statia i cunoaste Mi ) catre o destinatie aleatoare (se accepta trimierea unui mesaj chiar
spre ea insasi; obligatoriu, acea statie trebuie sa existe ). In momentul in care statia i trimite
ultimul sau mesaj, va avea griza sa decrementeze campul S din pachet.

O statie i se comporta astfel:


- sta blocata pana la receptia pachetului
- la primirea lui,
- daca pachetul e liber at.
- (*) daca statia vrea in acel moment sa transmitaun mesaj schimba starea in ocupat,
completeaza celelalte campuri (adrese + continut) si il trimite la statia urm
- altfel, transmite la statia urm pachetul primit
- altfel, daca mesajul e adresat ei atunci preia mesajul (afisand datele pe ecran) si apoi
- (*) daca statia vrea in acel moment sa transmita un mesaj lasa pachetul in starea
ocupat, copleteaza celelalte campuri si il transm la statia urm
- altfel trece pachetul in stare libera si in transmite la statia urm.
- daca mesajul nu e adresat ei transmite pachetul mai departe

(*) = daca statia i a trimis deja toate cele Mi mesaje, ea nu va mai transmite mesaje. Faptul ca o
statie I nu a trimis inca cele Mi mesaje proprii, nu inseamna ca ca ea va trimite unul chiar in acel
moment; se stabileste aleator daca vrea sau nu sa transmita exact la acel moment. Evident se
considera ca o statie nu amana la infinit transmiterea unui mesaj.

Daca este posibil, sa se scrie simulatorul in asa fel incat progamul sa se termine doar cand
nimeni nu mai vrea sa transmita mesaje, stiind canumai statia cu adresa 0 poate sa si termine
executia testand valoarea campului S al pachetului si este interzisa utilizarea altor forme de
comunicare intre procese (semnale, mem partajata, etc) cu exceptia pipe-urilor. Nu se accepta
nici trimiterea de mesaje suplimentare speciale pt terminare. Sa se argumenteze in 2-3 randuri de
ce e posibila/nu o astfel de implementare.

Obs. Se poate consid ca exista o functie int getRandom() care returneaza un intreg aleator >= 0

Teorie:

1. Sa se calculeze numarul de blocuri necesar pentru stocarea unui isier de 6 MB, stiind ca
dimensiunea unei adrese din I-Node este de 4 B, iar dimensiunea blocului este de 4 KB.
2. Controlul intreruperilor (semnalelor) in shell.
3. Apelurile sistem wait si exit
4. Sa se scrie un shell-script care citeste de la intrarea standard 2 valori (Val1, Val2). Daca
Val1 nu e director afiseaza eroare si se termina scriptul. Daca Val1 e director, se cauta in
directorul Val1 toate fisierele cu sufixul ".txt". Dintre ele se numara cele care contin textul Val2,
iar rezultatul se afiseaza.

Probleme:

Nota: toate problemele vor fi scrise in limbajul C si se vor folosi functii si apeluri system UNIX

1.(1.5p) Scrieti un program care sa afiseze numele fisierelor din directorul current sau din
directorul dat ca parametru, in cazul in care programul primeste parametru. Pe langa nume
pentru fisierele obisnuite va fi afisata dimensiunea lor in octeti, iar pentru legaturile simbolice va fi
afisata calea catre fisierul care arata legatura.

2.(2.0p) Scrieti un program care citeste de la intrarea standard linii (de maximum 80 caractere) ce
contin fiecare o cale catre un fisier. Programul va efectua pentru fiecare fisier, o suma de control
a octetilor incepand cu octetul 1000 lea din fisier prin operatia de sau-exclusiv. In final
programul va afisa cea mai mica sic ea mai mare dintre sumele de control calculate. Se
considera ca toate linile citite de la intrrarea standard contine cai valide si ca toate fisierele au cel
putin 1000 de octeti.
Programul va fi astfel conceput incat operatile de intrare/iesire cu fisiere diferite sa se efectueze
in parallel

3. Raspundeti la urmatoarele intrebari:


a) (0.25p) Fie programul de mai jos:
void usr1Handler(int sig)
{
printf(Salut\n);
}
int main()
{
rise(SIGUSR1);
exit(0);
}
Cum trebuie completat programul pentru ca la iesirea standard sa afiseze Salut?
b) (0.25p) Cate procese va crea segventa de cod de mai jos:
fork(); fork(); fork();

03.02.2005
Teorie :

1. Descrieti pe scurt min. 7 directoare de pe nivelul 1 la sistemul de fisiere UNIX.


2. Substitutiile facute de interpretorul de comenzi
3. Apelurile sistem fork() si vfork()
4. scrieti un shell script care realizeaza urmatoarele:
- citeste linii de la intrarea standard de intrare.Acestea suntconsiderate pathname.
Se cere sa se verifice :
1. daca nu exista pathname, sa se afiseze un mesaj de eroare.
2. daca pathname exista si este director, sa se afiseze pathname si numarul de
legaturi
simbolice continute
3. pentru pathname existent dar care nu e director, sa se afiseze pathname

Probleme:

1. Sa se scrie in C un program care foloseste apeluri sistem si functii de biblioteca UNIX si se


apeleaza din linia de comanda astfel:
- filecat director text
Programul parcurge la primul nivel directorul primit ca argument si afiseaza la iesirea standard
continutul tuturor fisierelor obisnuite al caror nume contine sirul de caractere text. Este interzisa
folosirea comenzilor externe UNIX.

2. Se considera un sistem de programe in C si ruland in mediul UNIX care simuleaza o fabrica de


asamblat biciclete,astfel:
- un program numit generator care primeste in linia de comanda un parametru numar
intreg intre 1 si 3 si se comporta diferit in functie de acesta,astfel:
a) daca a primit numarul 1, genereaza continuu la iesirea standard cuvantul "roata". dupa
fiecare cuvant generat, programul se suspenda un nr. oarecare de secunde.
b) idem pt 2,doar ca se tipareste "pedale"
c) idem pt 3,doar ca se tipareste "cadru"
- un program numit asamblor care trebuie sa asambleze biciclete folosind componetele
generate de cel putin linii de fabricatie de tipul celor de mai sus. O bicicleta se considera
asamblata cand are 2 roti, un cadru si un sistem de pedale. La fiecare bicicleta, programul
afiseaza la iesirea standard un mesaj care anunta acest eveniment. Sistemul de programe se
termina dupa asamblarea a N bicilete, N fiind un parametru primti de asamblor in linia de
comanda.

teorie:

randul 1:
1. harti de memorie in sisteme de operare OSMVT, OSMVS (doar astea!)
2. alocarea nodurilor index in sisteme de fisiere UNIX
3. sincronizarea cu variabile de conditie pentru fire de executie
4. scrieti o procedura shell care determina si afiseaza numarul de directoare cu numele incepand
cu majuscula din fiecare director dat ca argument obs: introduceti comenzi pt tratarea erorilor

randul 2:
1. interactiunea elementelor la executie
2. alocarea blocurilor in UNIX
3. apelurile sitem fork si vfork (tot despre ele!)
4. o procedura shell pt stergerea fisierelor cu sufixul .o din subarborele directorului dat

probleme:

varianta 1:

1. folosind apeluri sistem si functii de biblioteca C pt lucrul cu fisiere si directoare in UNIX, sa se


scrie un program care, primind doi parametrii in linia de comanda (un nume de cale si un sir de
caractere), cauta si afiseaza numele tuturor fisierelor din subarborele caii respective care au in
continutul lor sirul de caractere dat.

2. consideram un sistem software modular de acces la o baza de date alcatuit dintr-un modul
server si N module client (N este un parametru setat in momentul executiei). modulul server
primeste cereri de interogare de la modulele client sub forma unor siruri de caractere de lungime
arbitrara. la primirea unei astfel de cereri, modulul server lanseaza in executie programul extern
"query", transmitandu-i acestuia ca si parametru sirul de interogare primit; iesirea (output-ul)
executiei acestui program va fi rezultatul interogarii, care va fi transmis inapoi catre modulul
client corespunzator. pe de alta parte, clientii genereaza astfel de cereri de interogare la intervale
aleatoare de timp.

sa se scrie un program in C sub UNIX care simuleaza un astfel de sistem


precizare: se va evita folosirea functiei de biblioteca popen()

punctaj:

problema 1 1,5 puncte


problema 2 2,5 puncte
total 4,0 puncte

obs: punctajul necesar pentru promovarea partii de probleme este de 2 puncte!!


varianta 2:

1. sa se scrie un program C care foloseste apeluri sistem si functii de biblioteca UNIX care se
apeleaza din linia de comanda astfel:

append <sufix> <director> <text>

programul parcurge recursiv directorul al carui nume este dat ca al doilea argument si, pentru
fiecare fisier obisnuit al carui nume se termina in sufixul dat, adauga la continutul acestuia textul
specificat in linia de comanda.

2. implementati in C un interpretor de comenzi UNIX simplu, care prezinta o interfata in linie de


comanda si accepta urmatoarele tipuri de comezi:

a. <program> <argumente> [&] lanseaza in executie programul dat, transmitandu-i argumentele


(zero sau mai multe) specificate. daca din linia de comanda lipseste caracterul optional &, atunci
interpretorul asteapta terminarea programului lansat, dupa care afiseaza din nou prompt-ul pt a
permite introducerea unei noi comenzi. daca la sfarsitul liniei caracterul & exista, interpretorul
lanseaza "in background (in fundal)" programul, permitand imediat introducerea unei noi
comenzi (fara a astepta terminarea celei precedente)

b. <program1> <argumente> | <program2> <argumente>


|.........
lanseaza in paralel programele din linia de comanda, trimitandu-le argumentele specificate.
caracterul "|" are semnificatie obisnuita din UNIX de inlatuire a comenzilor ("pipe")

c. exit termina programul.

pt simplitatea implementarii, se considera ca exista disponibila o functie care extrage


argumentele unei comenzi astfel:

char **get_next_arg(char *sursa)

care, apelata cu sursa un sir de caractere de genul

program arg1 arg2 arg3

va returna un tablou de siruri de caractere continand sirurile: "program", "arg1", "arg2", "arg3",
NULL de asemenea se considera ca exista o functie

char *get_next_command(char *sursa, int *pozitie)

care, avand parametrul pozitie initializat cu adresa unei variabile intregi egala cu 0, va returna pe
rand fiecare comanda (de tip "program 1 arg1 arg2..."...) aflata in sirul sursa, presupunand ca
acesta este o inlantuire de comenzi separate prin "|". la sfarsitul linie date ca sursa, functia va
returna NULL. in plus, daca in sirul de caractere dat ca sursa nu exista "|", functia returneaza
imediat NULL.

obs: in implementare este interzisa folosirea functiei popen() si a comenzilor puse la dispozitie de
mediul UNIX

======================================

subiecte SO date la grupa 3


teorie :
1.Descrieti pe scurt min. 7 directoare de pe nivelul 1 la sist de fisiere UNIX.
2.Substitutiile facute de interpretorul de comenzi
3.Apelurile sistem fork() si vfork()
4. scrieti un shell script care realizeaza urmatoarele:
-citeste linii de la intrarea standard de intrare.Acestea sunt considerate pathname. Se cere sa
se verifice :
1. daca nu exista pathname, sa se afiseze un mesaj de eroare.
2. daca pathname exista si este director, sa se afiseze pathname si numarul de legaturi simbolice
continute
3. pentru pathname existent dar care nu e director, sa se afiseze pathname

Nu s-a dat pe randuri!!! (poate si din cauza faptului ca era un spatiu enorm intre noi!!)

Probleme:
1.Sa se scrie in C un prg care foloseste apeluri sistem si functii de biblioteca UNIX si se apeleaza
din linia de comanda astfel:
filecat director text
Prg parcurge la primul nivel directorul primit ca argument si afiseaza la iesirea standard
continutul tuturor fisierelor obisnuite al caror nume contine sirul de caractere text. Este interzisa
folosirea
comenzilor externe UNIX.

2.Se considera un sistem de programe in C si ruland in mediul UNIX care simuleaza o fabrica de
asamblat biciclete,astfel:
-un program numit generator care primeste in linia de comanda un parametru numar intreg intre
1 si 3 si se comporta diferit in functie de acesta,astfel:
a)daca a primit numarul 1, genereaza continuu la iesirea standard cuvantul "roata". dupa fiecare
cuvant generat, programul se suspenda un nr. oarecare de secunde.
b)idem pt 2,doar ca se tipareste "pedale"
c)idem pt 3,doar ca se tipareste "cadru"
- un program numit asamblor care trebuie sa asambleze biciclete folosind componetele generate
de cel putin linii de fabricatie de tipul celor de mai sus. O bicicleta se considera asamblata cand
are 2 roti, un cadru si un sistem de pedale. La fiecare bicicleta, programul afiseaza la iesirea
standard un mesaj care anunta acest eveniment.
Sistemul de programe se termina dupa asamblarea a N bicilete, N fiind un parametru primti de
asamblor in linia de comanda.

===============================

SO - probleme date anul trecut

1 (1.5p) Sa se scrie un program C care foloseste apeluri sistem si functii de biblioteca UNIX care
se apeleaza din linia de comanda astfel:
smalllinks <catalog>
Programul parcurge recursiv catalogul primit ca argument si numara aparitiile tuturor legaturilor
simbolice intalnite a caror dimensiune nu depaseste 10 octeti.

2 (2.5p) Sa se scrie urmatorul sistem de programe C independente care ruleaza intr-un mediu
UNIX:
a) Un program care se apeleaza din linia de comanda astfel:
sterge <nume fisier> <cuvant>
Programul citeste continutul fisierului text primit ca argument si il afiseaza la iesirea standard
eliminand liniile care incep cu sirul de caractere <cuvant>.
b) Un program care se apeleaza din linia de comanda astfel: creeaza_fisier <fisier> care creeaza
fisierul cu numele dat, continutul acestuia fiind preluat de la intrarea standard.
c) Un program numit "cenzor" care primeste in linia de comanda numele unui fisier de
configurare care contine linii de forma:
MUTA <fisier_sursa> IN <fisier_destinatie> ELIMINAND <cuvant>

Programul citeste fisierul de configurare si foloseste programele descrise la punctele a) si b)


pentru a realiza operatia specificata pe fiecare linie. Toate operatiile specificate in fisier vor fi
executate in paralel, iar fiecare operatie va trimite la iesirea standard mesaje de forma:
[<identificator operatie>] <nume fisier> a fost mutat imediat inainte de terminarea ei. Programul
cenzor va prelua aceste mesaje si le va scrie intr-un fisier text cu numele "cenzor.log".

OBSERVATIE: in implementare este interzisa folosirea apelurilor de tip popen() si system(),


precum si a altor comenzi sau programe decat cele specificate mai sus.

==================================================================
so - 05.02.2005

Teorie:

1. Sa se calculeze numarul de blocuri necesar pentru stocarea unui fisier de 6 MB, stiind ca
dimensiunea unei adrese din I-Node este de 4B, iar dimensiunea blocului este de 4 KB.
2. Controlul intreruperilor (semnalelor) in shell.
3. Apelurile sistem wait si exit
4. Sa se scrie un shell-script care citeste de la intrarea standard 2 valori (Val1, Val2). Daca
Val1 nu e director afiseaza eroare si se termina scriptul. Daca Val1 e director, se cauta in
directorul Val1 toate fisierele cu sufixul ".txt". Dintre ele se numara cele care contin textul Val2,
iar rezultatul se afiseaza.

Probleme:
Vezi fisierul atasat probleme.jpg

1 (1.5p) Sa se scrie un program C care foloseste apeluri sistem si functii de biblioteca UNIX care
se apeleaza din linia de comanda astfel:
smalllinks <catalog>
Programul parcurge recursiv catalogul primit ca argument si numara aparitiile tuturor legaturilor
simbolice intalnite a caror dimensiune nu depaseste 10 octeti.

2 (2.5p) Sa se scrie urmatorul sistem de programe C independente care ruleaza intr-un mediu
UNIX:
a) Un program care se apeleaza din linia de comanda astfel:
sterge <nume fisier> <cuvant>
Programul citeste continutul fisierului text primit ca argument si il afiseaza la iesirea standard
eliminand liniile care incep cu sirul de caractere <cuvant>.

b) Un program care se apeleaza din linia de comanda astfel:


creeaza_fisier <fisier>
care creeaza fisierul cu numele dat, continutul acestuia fiind preluat de la intrarea standard.

c) Un program numit "cenzor" care primeste in linia de comanda numele unui fisier de
configurare care contine linii de forma:
MUTA <fisier_sursa> IN <fisier_destinatie> ELIMINAND <cuvant>

Programul citeste fisierul de configurare si foloseste programele descrise la punctele a) si b)


pentru a realiza operatia specificata pe fiecare linie. Toate operatiile specificate in fisier vor fi
executate in paralel, iar fiecare operatie va trimite la iesirea standard mesaje de forma:
[<identificator operatie>] <nume fisier> a fost mutat imediat inainte de terminarea ei. Programul
cenzor va prelua aceste mesaje si le va scrie intr-un fisier text cu numele "cenzor.log".

OBSERVATIE: in implementare este interzisa folosirea apelurilor de tip popen() si system(),


precum si a altor comenzi sau programe decat cele specificate mai sus.

S-ar putea să vă placă și