Saat menggunakan O_WRONLY
flag dengan sendirinya, itu membuka file untuk menulis, mempertahankan konten file yang ada, dan menempatkan penunjuk file di awal file. Setiap penulisan akan menimpa konten yang ada.
Jika Anda menggunakan lseek
untuk memposisikan ulang penunjuk file, penulisan selanjutnya akan terjadi pada offset yang diposisikan ulang.
Perilaku ini kontras dengan O_TRUNC
yang memotong isi file saat dibuka, dan dengan O_APPEND
yang memaksa semua penulisan terjadi di akhir file.
Tidak juga.
-
Secara default file dibuka dengan kursor diposisikan di awal. Penulisan akan menimpa byte di awal file.
-
O_TRUNC
menyebabkan file terpotong jika ada. -
O_APPEND
menyebabkan penulisan ditambahkan ke akhir file alih-alih ditimpa di awal. Bendera ini gigih. Jika Anda memindahkan kursor ke tempat lain untuk membaca data, kursor akan selalu diposisikan ulang ke akhir file sebelum setiap penulisan.
Benderanya ortogonal dan tidak saling eksklusif. Anda bahkan dapat menggabungkannya jika awalnya ingin memotong file dan memastikan semua penulisan berikutnya selalu ditambahkan.