« Programmation POSIX/Fichiers » : différence entre les versions
Contenu supprimé Contenu ajouté
→Ouverture : (orth) |
WB:RD : ! orthographe/grammaire |
||
Ligne 1 :
{{Programmation POSIX}}
Nous allons ici expliquer comment
== Ouverture ==
Ligne 15 :
L'appel système ''open'' convertit un chemin vers un fichier en descripteur de fichier ouvert. Ce qui revient suivant les ''options'' fournies à créer un nouveau fichier ou à en ouvrir un existant en lecture et/ou en écriture. Les valeurs possibles pour ''options'' sont des ''ou binaire'' entre '''O_RDONLY''', '''O_WRONLY''' ou '''O_RDWR''' et une ou plusieurs des constantes symboliques suivantes :
* '''O_CREAT''', créé le fichier s'il n'existe pas. Les droits du fichier sont ceux spécifiés dans l'argument ''mode'' ;
* '''O_EXCL''', à utiliser en conjonction avec '''O_CREAT''', provoque l'échec de l'appel si le fichier existe
* '''O_TRUNC''', si le fichier existe, est régulier et est ouvert en écriture, le fichier est tronqué à la longueur nulle (il est vidé) ;
* '''O_APPEND''', le fichier est ouvert en mode ajout : la tête de lecture est placée à la fin du fichier.
Ligne 74 :
</source>
L'appel système ''read'' lit au plus ''nombre'' octets depuis le descripteur de fichier ''fd'' et les place dans le ''buffer''. En cas d'erreur, ''read'' renvoie -1, sinon le nombre d'octets réellement lus est renvoyé. L'argument ''nombre'' peut être nul
'''Remarque :''' Il est beaucoup plus intéressant, au niveau des performances, de lire de grandes quantités de données et de minimiser le nombre d'appels à ''read'' que de lire le fichier ''petits bouts par petits bouts'' (le pire étant de lire le fichier caractère par caractère).
Ligne 90 :
=== Exemple lecture/écriture ===
Le programme suivant utilise tout ce que l'on a vu
<source lang="c">
Ligne 142 :
}
/* Fermeture des fichiers et fin du
close(source);
close(destination);
Ligne 157 :
</source>
L'appel système ''lseek'' permet de modifier la position courante dans un fichier en la
* '''SEEK_SET''', le déplacement est effectué à partir du début du fichier ;
* '''SEEK_CUR''', le déplacement est effectué à partir de la position courante ;
|