Historiquement, les appels système associés aux fichiers étaient dédiés à la communication de l'ordinateur avec ses périphériques (écran, clavier, disque, imprimante, etc.). Sur les systèmes modernes, les différents périphériques sont gérés par le système lui-même, qui fournit à l'utilisateur une interface abstraite, un descripteur de fichier (file descriptor en anglais) pour accéder aux fichiers (...)
[...] En cas de succès, le système d'exploitation va créer une référence dans la table des fichiers et va indiquer l'entier correspondant. Une fois référencé dans la table des fichiers, le fichier est dit « ouvert ». < number > Valeurs de flags O_RDONLY pour ouvrir un fichier en lecture seule ; O_WRONLY pour ouvrir un fichier en écriture seule ; O_RDWR pour ouvrir un fichier en lecture/écriture ; O_APPEND pour ne pas écraser un fichier existant et placer les données qui seront ajoutées à la fin de celui-ci ; O_CREAT pour créer le fichier s'il n'existe pas. [...]
[...] < number > Les descripteurs de fichiers (suite) Un certain nombre d'opérations génériques sont définies sur les descripteurs de fichier, qui sont ensuite traduites par le système en fonction du périphérique auquel se rapporte ce descripteur. Ainsi, écrire une chaîne de caractères à l'écran ou dans un fichier se fera - pour l'utilisateur - de la même manière. D'autres opérations sont spécifiques au type de descripteur de fichier. < number > L'appel système open() int open(const char *path, int flags, mode_t mode) L'appel système open() permet d'associer un descripteur de fichier à un fichier que l'on souhaite manipuler. [...]
[...] L'appel système read() s'utilise de la manière suivante : < number > exemple #define NB_CAR 50 int main(int argc, char { int int char texte[NB_CAR]; f = open("/etc/passwd",O_RDONLY, NULL); { printf("le fichier n'a pu etre ouvert\n"); exit(EXIT_FAILURE); } printf("le fichier a ete correctement ouvert\n"); < number > n = read texte, NB_CAR - NB_CAR - 1 car il faut laisser de la place pour le caractere ajoute en fin de chaine de caracteres < number > if { printf("erreur de lecture du fichier\n"); exit(EXIT_FAILURE); } else if(n printf("tout le fichier a ete else printf("%d caracteres ont pu etre exit(EXIT_SUCCESS); } < number > L'appel système write int write(int fd, void *buf, size_t nbytes) L'appel système write() permet d'écrire des données dans un fichier représenté par le descripteur de fichier fd. Il s'utilise de la même façon que l'appel système read(). < number > L'appel système write (suite) La valeur retournée est le nombre d'octets effectivement écrits. En cas d'erreur, est retourné. < number > L'appel système close int close(int fd) Cet appel permet de fermer un fichier précédemment ouvert par l'appel système open(), c'est-à-dire de supprimer la référence à ce fichier dans la table maintenue par le système (table des fichiers ouverts). [...]
[...] < number > Les descripteurs de fichiers (suite) Cette interface se présente pour l'utilisateur sous la forme d'un simple entier : le système d'exploitation tient en fait à jour une table appelée table des fichiers ouverts, où sont référencés tous les fichiers utilisés, c'est-à-dire tous les fichiers en train d'être manipulés par un processus (création, écriture, lecture), et l'entier mis à disposition de l'utilisateur correspond au numéro de la ligne de la table faisant référence au fichier concerné. < number > Les descripteurs de fichiers (suite) Le mot fichier ne doit pas être compris ici au sens « fichier sur le disque dur », mais comme une entité pouvant contenir ou transmettre des données. [...]
[...] < number > Les principales fonctions de la bibliothèque standard d'entrées / sorties FILE *fopen(char *path, char *mode) int fprintf(FILE *stream, const char *format ) int fscanf(FILE *stream, const char *format ) int feof(FILE *stream) < number > Les principales fonctions de la bibliothèque standard d'entrées / sorties (suite) int ferror(FILE *stream) char *fgets(char *str, int size, FILE *stream) int fclose(FILE *stream) sprintf() et scanf() < number > Les descripteurs de fichier particuliers stdin qui correspond au descripteur de fichier c'est-à-dire à l'entrée standard ; stdout qui correspond au descripteur de fichier c'est-à-dire à la sortie standard ; stderr qui correspond au descripteur de fichier c'est-à-dire à la sortie d'erreur standard. < number > Les descripteurs de fichier particuliers Les descripteurs de fichiers et 2 sont spéciaux : ils représentent respectivement l'entrée standard, la sortie standard et la sortie d'erreur. Si le programme est lancé depuis un terminal de commande sans redirection est associé au clavier et 2 à l'écran. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture