GNU/Linux >> Linux の 問題 >  >> Linux

デフォルトの書き込み動作 - O_TRUNC または O_APPEND?

O_WRONLY を使用する場合 フラグを単独で指定すると、書き込み用にファイルが開かれ、既存のファイルの内容が保持され、ファイル ポインタがファイルの先頭に置かれます。書き込みは既存のコンテンツを上書きします。

lseek を使用する場合 ファイル ポインタの位置を変更すると、その後の書き込みは位置変更されたオフセットで行われます。

この動作は O_TRUNC とは対照的です 開いたときにファイルの内容を切り捨て、 O_APPEND で これにより、すべての書き込みがファイルの最後で強制的に行われます。


どちらでもない。

  • デフォルトでは、ファイルはカーソルが先頭にある状態で開かれます。書き込みにより、ファイルの先頭にあるバイトが上書きされます。

  • O_TRUNC ファイルが存在する場合、ファイルが切り捨てられます。

  • O_APPEND ファイルの先頭で上書きするのではなく、ファイルの最後に書き込みを追加します。このフラグは永続的です。データを読み取るためにカーソルを別の場所に移動すると、各書き込みの前に常にファイルの末尾に再配置されます。

フラグは直交しており、相互に排他的ではありません。最初にファイルを切り詰めて、その後のすべての書き込みが常に追加されるようにする場合は、それらを結合することもできます。


Linux
  1. 別のファイルに書き込む方法は?

  2. >&-は> / dev / nullよりも効率的ですか?

  3. すべてのTmuxスクロールバックをファイルに書き込みますか?

  1. すでに実行中のプロセスが既存のファイルに書き込むのを防ぎますか?

  2. Linux のファイル権限 – 読み取り/書き込み/実行

  3. LinuxでCでファイルを書く方法は?

  1. .txt ファイルに書き込みますか?

  2. シェル - 変数の内容をファイルに書き込む

  3. LinuxでO_APPENDモードで開くを使用して、Cでファイルに追加する方法は?