Curs 1
APELURI SISTEM PENTRU
OPERATIILE CU FISIERE
Cuprins
- Apeluri sistem
- Descriptorii de fisiere
- Apelul sistem open
- Apelul sistem creat
- Apelul sistem lseek
- Apelul sistem seek
- Exemplu
Apeluri Sistem
- Functii prin care un sistem de operare ofera servicii programatorilor
- Sunt apelabile ca un apel obisnuit de functie
- Pentru functiile obisnuite
- codul functiei este prezent in biblioteca
- este adaugat programului in care se apeleaza functia la linkeditare
- Pentru apelurile sistem
- Codul de biblioteca pregateste intrarea in sistemul de operare
- Preluarea rezultatelor si transmiterea lor spre programul apelant
- Executia are loc intr-o secventa ce face parte din sistemul de operare
- Intrarea in sistem = schimbarea regimului de munca din modul neprivilegiat in modul privilegiat
Descriptori de fisiere
- Identificator prin care nucleul Unix identifica toate fisierele deschise de un proces
- Intreg nenegativ
- atribuit de nucleu la deschiderea fisierului
- ce ramane valabil pana la inchiderea acestuia
- Deschiderea de fisier
- Operatia prin care intre un proces si un fisier se creeaza un canal de comunicare
- Interpretoarele Unix deschid 3 fisiere standard:
- Fisierul standard de intrare - descriptorul 0
- Fisierul standard de iesire - descriptorul 1
- Fisierul standard de eroare - descriptorul 2
- Sunt limitati la nivelul unui proces 32 sau 64
- Pot fi referiti prin constante simbolice
- STDIN_FILENO
- STDOUT_FILENO
- STDERR_FILENO
- Definite in <unistd.h>
- Cresterea portabilitatii programelor pe diverse versiuni sau platforme
Apelul sistem open
- Este folosit pentru deschiderea unui fisier
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open (const char *pathname, int oflag,
/*, mode_t mode*/ );
- Returneaza o valoare ne-negativa daca apelul se executa fara eroare
- Returneaza -1 daca la executie apare vreo eroare
- Primul argument este numele de cale al fisierului
- Al doilea argument indica optiunile de deschidere
- Al treilea argument apare numai daca la deschidere are loc si creare fisierului
Optiunile de deschidere ale apelului open
- O_RDONLY – deschide fisier pentru citire
- O_WRONLY – deschide fisier pentru scriere
- O_RDWR – deschide fisier pentru citire si scriere (actualizare)
- O_APPEND – adauga la sfarsitul fisierului la fiecare operatie de scriere
- O_CREAT – creaza fisierul daca el nu exista deja, caz in care al treilea argument reprezinta drepturile de acces
- O_EXCL – genereaza o eroare daca s-a specificat si O_CREATE in caz ca fisierul exista; testul de existenta si crearea se executa ca operatie atomica
- O_TRUNC – daca fisierul exista si poate fi deschis pentru scriere sau citire-scriere atunci lungimea sa se trunchiaza la zero
- O_NOCTTY – daca numele de cale se refera la un terminal, atunci acel terminal nu va fi alocat ca si terminal de control pentru procesul curent
- O_NONBLOCK – daca numele de cale se refera la vre-un periferic orientat pe caracter sau pe bloc, fisierul se deschide cu optiunea ca operatiile cu el nu conduc la blocarea procesului care le solicita
- O_SYNC – efectuarea oricarei operatii de scriere se asteapta pana la terminarea operatiei la nivel fizic
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.