Lors de l'utilisation du O_WRONLY
flag par lui-même, il ouvre le fichier en écriture, conserve le contenu du fichier existant et place le pointeur de fichier au début du fichier. Toute écriture écrase le contenu existant.
Si vous utilisez lseek
pour repositionner le pointeur de fichier, les écritures suivantes se produiront au décalage repositionné.
Ce comportement contraste avec O_TRUNC
qui tronque le contenu du fichier à l'ouverture, et avec O_APPEND
qui force toutes les écritures à se produire à la fin du fichier.
Ni l'un ni l'autre.
-
Par défaut, le fichier est ouvert avec le curseur positionné au début. L'écriture écrase les octets au début du fichier.
-
O_TRUNC
provoque la troncature du fichier s'il existe. -
O_APPEND
provoque l'ajout des écritures à la fin du fichier au lieu de les écraser au début. Ce drapeau est persistant. Si vous déplacez le curseur ailleurs pour lire des données, il est toujours repositionné à la fin du fichier avant chaque écriture.
Les drapeaux sont orthogonaux et ne s'excluent pas mutuellement. Vous pouvez même les combiner si vous souhaitez initialement tronquer le fichier et vous assurer que toutes les écritures ultérieures sont toujours ajoutées.