GNU/Linux >> Tutoriels Linux >  >> Linux

Comportement d'écriture par défaut - O_TRUNC ou O_APPEND ?

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.


Linux
  1. >&- est-il plus efficace que>/dev/null ?

  2. Écrire tout le défilement Tmux dans un fichier ?

  3. Empêcher le processus déjà en cours d'écrire dans un fichier existant ?

  4. file_put_contents ne crée pas de fichier txt

  5. Comment ajouter au fichier en C, en utilisant Open in O_APPEND Mode sous Linux ?

Comment créer et modifier le fichier WordPress .htaccess par défaut

Bash :Écrire dans un fichier

Comment changer le fichier journal Sudo par défaut sous Linux

Comment ajouter un fichier .box téléchargé à Vagrant sous Linux

ouvrir un fichier avec le programme par défaut dans node-webkit

setfacl pour réinitialiser le fichier aux autorisations par défaut ?