OBERTURA I CREACIÓ DE FITXERS

Les crides al sistema que permeten obrir o crear un fitxer són:

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

int open(const char *nomfitxer, int mode);
int open(const char *nomfitxer, int mode, mode_t permisos);
int creat(const char *nomfitxer, mode_t permisos);

open: Permet obrir el fitxer nomfitxer per tal de realitzar l'acció que especifiqui mode. Retorna un descriptor de fitxer si tot va bé i si no és així, retorna -1 i errno contindrà el codi d'error que s'hagi produït.

mode s'obtindrà de fer la o lògica (el símbol | ) entre diverses constants simbòliques que es poden trobar a /usr/include/bits/fcntl.h. Primer de tot, haurà d'haver una d'aquestes tres constants: O_RDONLY, O_WRONLY o O_RDWR de significats respectius només lectura, només escriptura o lectura i escriptura, a continuació vindrà el símbol | seguit d'una de les constants següents: O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC, O_FSYNC, O_ASYNC, O_DIRECT, O_DIRECTORY, O_NOFOLLOW o O_NOATIME. Gràficament:

Com podem veure, hi ha dos perfils per open: el primer d'ells és per obrir un fitxer existent i amb aquest no té sentit utilitzar O_CREAT. Pel que fa als altres flags, destaquem la descripció de dos d'ells (si feu man 2 open, podreu consultar els demés):

O_APPEND : Per afegir les dades pel final del fitxer en cas d'obrir per escriure.
O_TRUNC: Gairebé el contrari de l'anterior: matxaca el contingut previ del fitxer.

La crida open amb tres paràmetres serà aquella que vulgui crear el fitxer en cas que no existeixi. Sempre que volguem fer això caldrà afegir O_CREAT i emplenar el tercer paràmetre, els permisos, que també es construeixen separant amb | les constants simbòliques que podem trobar al fitxer /usr/include/linux/stat.h:

S_ISUID
Permís setuid
S_ISGID
Permís setgid
S_ISVTX Permís sticky
S_IRUSR Permís de lectura per al propietari
S_IWUSR Permís d'escriptura per al propietari
S_IXUSR Permís d'execució per al propietari
S_IRGRP Permís de lectura per al grup propietari
S_IWGRP Permís d'escriptura per al grup propietari
S_IXGRP Permís d'execució per al grup propietari
S_IROTH Permís de lectura per a la resta d'usuaris
S_IWOTH Permís d'escriptura per a la resta d'usuaris
S_IXOTH Permís d'execució per a la resta d'usuaris
S_IRWXG Permís de lectura, escriptura i execució per al grup propietari
S_IRWXU Permís de lectura, escriptura i execució per al propietari
S_IRWXO Permís de lectura, escriptura i execució per a la resta d'usuaris

La crida creat equival a open amb el mode O_WRONLY|O_CREAT|O_TRUNC. És a dir, si el fitxer existeix, el sobrescriu. En qualsevol cas, l'obre per escriure.

 

 

 

Autor: Lluís València López

Creative Commons License
Aquesta obra està subjecta a una Llicència de Creative Commons.