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 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 -f [-l ] in care: este un fisier care contine datele de intrare care trebuie filtrate este numele unui program executabil care are nevoie de datele filtrate si caruia i se vor trimite rezultatele filtrarii este numele programului executabil utilizat ca filtru 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.