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.

|