Sistem Unix pada umumnya menghindari kunci wajib. Ada beberapa kasus di mana kernel akan mengunci file terhadap modifikasi oleh program pengguna, tetapi tidak jika itu hanya ditulis oleh program lain. Tidak ada sistem unix yang akan mengunci file karena ada program yang menulisnya.
Jika Anda ingin contoh skrip Anda tidak menginjak jari kaki satu sama lain, Anda perlu menggunakan mekanisme penguncian eksplisit seperti .flock
lockfile
Ketika Anda membuka file untuk menambahkan, yang >>
tidak, setiap program dijamin untuk selalu menulis ke akhir file. Jadi hasil dari banyak instance tidak akan pernah saling menimpa, dan jika mereka bergantian menulis, output mereka akan berada dalam urutan yang sama dengan yang ditulis.
Hal buruk yang bisa terjadi adalah jika salah satu contoh menulis beberapa potongan output dan mengharapkan mereka untuk keluar bersama. Antara eksekutif menulis dengan satu contoh, contoh lain dapat melakukan tulisan mereka sendiri. Misalnya, jika instance 1 menulis foo
, maka instance 2 menulis hello
dan hanya kemudian instance 2 menulis bar
, maka file tersebut akan berisi foohellobar
.
Suatu proses secara efektif menulis ke file ketika memanggil panggilan write
sistem. Panggilan ke write
adalah atomik: setiap panggilan untuk write
menulis urutan byte yang tidak akan terganggu oleh program lain. Sering kali ada batasan seberapa banyak data yang write
akan ditulis oleh satu panggilan : untuk ukuran yang lebih besar, hanya permulaan data yang ditulis, dan aplikasi harus menelepon write
lagi. Selanjutnya, banyak program melakukan buffering: mereka mengumpulkan data di area memori, lalu menulis data ini dalam satu potongan. Beberapa program membilas buffer output setelah baris lengkap atau pemisahan bermakna lainnya. Dengan program semacam itu, Anda dapat berharap seluruh jalur tidak akan terganggu, asalkan tidak terlalu lama (hingga beberapa kilobyte; ini tergantung pada OS). Jika program tidak menyiram pada titik-titik yang berarti, tetapi hanya berdasarkan pada ukuran buffer, Anda mungkin melihat sesuatu seperti 4kB dari satu contoh, kemudian 4kB dari contoh lain, kemudian lagi 4kB dari contoh pertama dan seterusnya.