next up previous
Next: close Up: Operatii de intrare/iesire (I/O) Previous: Operatii de intrare/iesire (I/O)

open

Apelul open este folosit pentru a deschide (eventual si a crea) un fisier. Se intoarce descriptorul asociat acelui fisier daca nu am avut eroare, sau o valoare negativa in caz de eroare. Descriptorul utilizat este cel cu valoarea cea mai mica posibila (care nu este asociat altui fisier) din cadrul tabelei de descriptori a procesului.

Sintaxa de apel este

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open (const char *pathname, int flags);
int open (const char *pathname, int flags, mode_t mode);

A doua forma este folosita atunci cand se creeaza fisierul si se doreste a fi prezentate drepturile cu care va fi creat.

pathname este calea catre fisierul care va fi deschis; poate fi in forma relativa la directorul curent sau forma absoluta;

flags reprezinta o serie de indicatori pentru a indica modul in care trebuie descris fisierul; acesta poate fi o combinatie de mai multe optiuni ce pot fi folosite impreuna (bitwise OR); o optiune trebuie sa fie neaparat una si numai una dintre

Pe langa aceste optiuni mai pot fi prezente (optional) si altele dintre care amintim

Mai jos sunt prezentate doua exemple de folosire

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

...
        int fd;

        /*
         * deschidem fisierul pentru scriere; dorim sa cream fisierul si
         * punem conditia sa nu existe deja
         */
        fd = open ("myfile.txt", O_WRONLY | O_CREAT | O_EXCL, 0644);
        if (fd < 0) {
                perror ("open");
                exit (EXIT_FAILURE);
        }
...
...
        int fd2;

        /*
         * fisier simplu deschis pentru citire
         */
        fd = open ("myotherfile.txt", O_RDONLY);
        if (fd < 0) {
                 perror ("open");
                 exit (EXIT_FAILURE);
        }
...


next up previous
Next: close Up: Operatii de intrare/iesire (I/O) Previous: Operatii de intrare/iesire (I/O)
Razvan Adrian Deaconescu 2005-10-01