Skip to content

Sisteme de Operare (pe scurt)

aliasbind edited this page May 18, 2011 · 15 revisions

Fișiere

Deschidere

  int open(const char *pathname, int flags);
  • Deschide fișierul aflat la calea pathname cu opțiunile date în flags.
  • Returnează un descriptor la fișierul respectiv sau -1 în caz de eroare.
  int open(const char *pathname, int flags, mode_t mode);
  • La fel ca mai sus, numai că mai ai un parametru suplimentar pentru specificat drepturile fișierului în cazul în care acesta este creat. (ai folosit O_CREAT în lista de flags).

Citire

  ssize_t read(int fd, void *buf, size_t count);
  • Citește din fișierul având descriptorul fd un număr de count bytes și îi pune în locul din memorie rezervat la adresa buf. (ssize_t e echivalent cu int)
  • Returnează numărul de bytes citiți sau -1 în caz de eroare.

Scriere

  ssize_t write(int fd, const void *buf, size_t count);
  • Scrie în fișierul având descriptorul fd un număr de count bytes care încep la adresa specificată de buf.
  • Returnează numărul de bytes scriși sau -1 în caz de eroare.

Închidere

  int close(int fd);
  • Închide fișierul având descriptorul fd.
  • Returnează 0 dacă apelul se termină cu succes, -1 altfel. (NOTĂ: Nu e cazul să verifici dacă apelul a eșuat sau nu).

Directoare

Deschidere

  DIR *opendir(const char *name);
  • Deschide directorul dat la calea name.
  • Returnează un fel de structură ajutătoare ce va fi folosită ulterior la alte funcții cu directoare. (spre exemplu în readdir() mai jos). În caz de eroare, returnează NULL.

Citire

  struct dirent *readdir(DIR *dirp);
  • Citește conținutul directorului deschis mai înainte.
  • Returnează o structură ce conține date despre un fișier din acest director. La următoare apelare a lui readdir() se va obține o altă structură a altui fișier din director, și tot așa până cand nu mai sunt fișiere, caz în care se returnează NULL.
  • Structura dirent este definită astfel:
  struct dirent
  {
      ino_t d_ino;      // Numărul i-nodului.
      char d_name[256]; // Numele fișierului.
      ...               // Alte date neimportante.
  };
Clone this wiki locally