O_WRONLY
を使用する場合 フラグを単独で指定すると、書き込み用にファイルが開かれ、既存のファイルの内容が保持され、ファイル ポインタがファイルの先頭に置かれます。書き込みは既存のコンテンツを上書きします。
lseek
を使用する場合 ファイル ポインタの位置を変更すると、その後の書き込みは位置変更されたオフセットで行われます。
この動作は O_TRUNC
とは対照的です 開いたときにファイルの内容を切り捨て、 O_APPEND
で これにより、すべての書き込みがファイルの最後で強制的に行われます。
どちらでもない。
-
デフォルトでは、ファイルはカーソルが先頭にある状態で開かれます。書き込みにより、ファイルの先頭にあるバイトが上書きされます。
-
O_TRUNC
ファイルが存在する場合、ファイルが切り捨てられます。 -
O_APPEND
ファイルの先頭で上書きするのではなく、ファイルの最後に書き込みを追加します。このフラグは永続的です。データを読み取るためにカーソルを別の場所に移動すると、各書き込みの前に常にファイルの末尾に再配置されます。
フラグは直交しており、相互に排他的ではありません。最初にファイルを切り詰めて、その後のすべての書き込みが常に追加されるようにする場合は、それらを結合することもできます。