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
#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); } ...