GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Standard-Schreibverhalten - O_TRUNC oder O_APPEND?

Bei Verwendung des O_WRONLY Flag selbst, öffnet es die Datei zum Schreiben, behält den vorhandenen Dateiinhalt bei und setzt den Dateizeiger an den Anfang der Datei. Alle Schreibvorgänge überschreiben vorhandene Inhalte.

Wenn Sie lseek verwenden Um den Dateizeiger neu zu positionieren, erfolgen nachfolgende Schreibvorgänge am neu positionierten Offset.

Dieses Verhalten steht im Gegensatz zu O_TRUNC die den Inhalt der Datei beim Öffnen abschneidet, und mit O_APPEND wodurch alle Schreibvorgänge am Ende der Datei erfolgen.


Weder noch.

  • Standardmäßig wird die Datei mit dem Cursor am Anfang geöffnet. Beim Schreiben werden die Bytes am Anfang der Datei überschrieben.

  • O_TRUNC bewirkt, dass die Datei abgeschnitten wird, falls sie existiert.

  • O_APPEND bewirkt, dass Schreibvorgänge an das Ende der Datei angehängt werden, anstatt sie am Anfang zu überschreiben. Dieses Flag ist dauerhaft. Wenn Sie den Cursor an eine andere Stelle bewegen, um Daten zu lesen, wird er vor jedem Schreibvorgang immer an das Ende der Datei verschoben.

Die Flags sind orthogonal und schließen sich nicht gegenseitig aus. Sie können sie sogar kombinieren, wenn Sie die Datei zunächst abschneiden und sicherstellen möchten, dass alle späteren Schreibvorgänge immer angehängt werden.


Linux
  1. Ist>&- effizienter als>/dev/null?

  2. Alle Tmux-Scrollbacks in eine Datei schreiben?

  3. Bereits laufenden Prozess daran hindern, in eine vorhandene Datei zu schreiben?

  4. file_put_contents erstellt keine txt-Datei

  5. Wie fügt man an eine Datei in C an, indem man Open in O_APPEND Mode unter Linux verwendet?

So erstellen und bearbeiten Sie die Standard-WordPress-.htaccess-Datei

Bash:In Datei schreiben

So ändern Sie die Standard-Sudo-Protokolldatei in Linux

So fügen Sie eine heruntergeladene .box-Datei zu Vagrant in Linux hinzu

Wie finde ich den Standard-Dateimanager?

Festlegen von Dateiberechtigungen beim VSFTP-Upload