Sunteți pe pagina 1din 2

1.

Sa se scrie un program C care foloseste apeluri sistem si functii de biblioteca


UNIX care se
apeleaza in linia de comanda astfel:
set <sufix> <drepturi>
Programul realizeaza pentru toate fisierele din directorul curent ale caror nume se
termina cu
sufixul dat modificarea drepturilor de acces dupa cum e indicat in linia de
comanda. Se considera
ca drepturile de acces sunt specificate printr-un sir de maxim patru caractere cu
urmatorul format:
wd[d[d]]
in care:
w - reprezinta categoria de utilizatori si poate fi: u (utilizatorul
proprietar),
g(grupul proprietar), o (ceilalti utilizatori), a (toti utilizatorii)
d - reprezinta unul din caracterele r, w, x si '-' si semnifica existenta
dreptului
respectiv (r-read, w-write, x-execute) sau inexistenta lui ('-')

Exemple:

Daca este apelat astfel:


set .txt uxw
programul modifica toate drepturile pentru fisierele care se termina in .txt,
astfel incat ele
vor avea permisiunile:
-wx------
(write si execute pentru proprietar)

Un apel
set .txt ar
va modifica drepturile fisierelor cu sufixul .txt:
r--r--r
(toti utilizatorii vor avea drept de citire)

Indicatii:

Se poate folosi apelul sistem


int chmod(const char *path, mode_t mode);
iar pentru parametrul mode se pot folosi combinatii intre constantele:
S_IRUSR 00400 read by owner
S_IWUSR 00200 write by owner
S_IXUSR 00100 execute/search by owner
S_IRGRP 00040 read by group
S_IWGRP 00020 write by group
S_IXGRP 00010 execute/search by group
S_IROTH 00004 read by others
S_IWOTH 00002 write by others
S_IXOTH 00001 execute/search by others

2. Sa se scrie un program C care foloseste apeluri sistem si functii de biblioteca


UNIX
si implementeaza sistemul descris in continuare.

Se considera un set de programe care filtreaza datele pe care le primesc la


intrarea standard
si genereaza la iesirea standard rezultatul filtrarii. Datele sunt considerate
intotdeauna
in format text, iar modalitatea de filtrare este specifica fiecarui program.

In sistem exista de asemenea un program extern numit "launcher" care este apelat de
catre
utilizatori si are rolul de a le oferi acestora o interfata pentru a utiliza
programele
filtru. Programul launcher se porneste din linia de comanda astfel:

launcher <fisier_intrare> -f <filtru> <program_prelucrare>


[-l <fisier_jurnal>]

in care:
<fisier_intrare> este un fisier care contine datele de intrare
care trebuie filtrate
<program_prelucrare> este numele unui program executabil care
are nevoie de datele filtrate si caruia
i se vor trimite rezultatele filtrarii
<filtru> este numele programului executabil utilizat ca filtru
<fisier_jurnal> este fisierul in care vor fi memorate mesajele
generate de filtre si de catre programul launcher
in timpul functionarii la iesirea de eroare standard

Programul launcher porneste filtrul si ii trimite printr-un pipe datele citite din
fisierul
de intrare. De asemenea, programul trebuie sa trimita datele produse de filtru
catre programul
de prelucrare al carui nume a fost primit ca argument in linia de comanda.

Atat filtrele cat si programul launcher trebuie sa afiseze la iesirea de eroare


standard toate
mesajele care contin informatii despre fazele prelucrarii datelor si despre
eventualele erori
care au aparut. Daca programul launcher primeste in linia de comanda optiunea -l,
aceste mesaje
vor trebui sa ajunga in fisierul jurnal indicat, iar daca nu, ele vor trebui sa
apara la iesirea
standard de eroare a programului launcher.

Pe langa programul launcher, se va implementa un exemplu de program filtru, la


alegere.
Programul de prelucrare finala a datelor nu trebuie implementat si se considera ca
acesta
accepta datele respective la intrarea standard.

La folosirea apelurilor sistem si a functiilor de biblioteca se va verifica


intotdeauna
daca executia lor s-a efectuat cu succes. De asemenea, va fi verificata
corectitudinea
argumentelor date in linia de comanda.

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