GNU/Linux >> Linux Esercitazione >  >> Linux

Comportamento di scrittura predefinito - O_TRUNC o O_APPEND?

Quando si utilizza il file O_WRONLY flag da solo, apre il file per la scrittura, conserva il contenuto del file esistente e posiziona il puntatore del file all'inizio del file. Qualsiasi scrittura sovrascrive il contenuto esistente.

Se usi lseek per riposizionare il puntatore del file, le successive scritture avverranno all'offset riposizionato.

Questo comportamento contrasta con O_TRUNC che tronca il contenuto del file quando viene aperto, e con O_APPEND che forza tutte le scritture a verificarsi alla fine del file.


Nessuno dei due.

  • Di default il file viene aperto con il cursore posizionato all'inizio. La scrittura sovrascrive i byte all'inizio del file.

  • O_TRUNC fa sì che il file venga troncato se esiste.

  • O_APPEND fa sì che le scritture vengano aggiunte alla fine del file invece di sovrascriverle all'inizio. Questo flag è persistente. Se sposti il ​​cursore altrove per leggere i dati, viene sempre riposizionato alla fine del file prima di ogni scrittura.

I flag sono ortogonali e non si escludono a vicenda. Puoi persino combinarli se desideri troncare inizialmente il file e assicurarti che tutte le scritture successive vengano sempre accodate.


Linux
  1. Eseguire operazioni di scrittura atomica in un file in Bash?

  2. Come scrivere un file in un altro?

  3. Scrivi tutto Tmux Scorri indietro su un file?

  4. Impedire il processo già in esecuzione per scrivere su un file esistente?

  5. apri un file con il programma predefinito in node-webkit

Come creare e modificare il file .htaccess di WordPress predefinito

Bash:Scrivi su file

Come modificare il file di registro di Sudo predefinito in Linux

Come aggiungere il file .box scaricato a Vagrant in Linux

Come aggiungere al file in C, utilizzando Apri in modalità O_APPEND su Linux?

Come trovare il file manager predefinito?