GNU/Linux >> Znalost Linux >  >> Linux

Výchozí chování zápisu - O_TRUNC nebo O_APPEND?

Při použití O_WRONLY příznak sám o sobě otevře soubor pro zápis, zachová stávající obsah souboru a umístí ukazatel na soubor na začátek souboru. Jakékoli zápisy přepíší existující obsah.

Pokud použijete lseek k přemístění ukazatele souboru dojde k dalším zápisům na přemístěném posunu.

Toto chování kontrastuje s O_TRUNC která při otevření zkrátí obsah souboru a pomocí O_APPEND což vynutí všechny zápisy na konci souboru.


Ani ne.

  • Ve výchozím nastavení je soubor otevřen s kurzorem umístěným na začátku. Zápis přepíše bajty na začátku souboru.

  • O_TRUNC způsobí, že soubor bude zkrácen, pokud existuje.

  • O_APPEND způsobí, že se zápisy připojí na konec souboru namísto přepsání na začátku. Tento příznak je trvalý. Pokud přesunete kurzor jinam za účelem čtení dat, vždy se před každým zápisem přemístí na konec souboru.

Vlajky jsou ortogonální a vzájemně se nevylučují. Můžete je dokonce zkombinovat, pokud chcete soubor zpočátku zkrátit a zajistit, aby všechny pozdější zápisy byly vždy připojeny.


Linux
  1. Provádění operací atomového zápisu v souboru v Bash?

  2. Je>&- efektivnější než>/dev/null?

  3. Zabránit již běžícímu procesu zápisu do existujícího souboru?

  1. otevřete soubor s výchozím programem v node-webkit

  2. Jak najít výchozího správce souborů?

  3. Nastavení oprávnění k souboru při nahrávání VSFTP

  1. Jak zapsat soubor do jiného?

  2. Zapsat všechny rolování Tmux do souboru?

  3. Oprávnění souborů v Linuxu – čtení/zápis/spouštění