Eğer kullanırsak, echo 1234 >> some-file
Belgelendirme çıktının eklendiğini söyler.
Tahminim, eğer bir dosya yoksa, O_CREAT yeni bir dosya yapacak. Eğer >
kullanıldı, ardından O_TRUNC dosyasını varolan keser.
Durumda >>
: Dosya O_WRONLY (veya O_RDWR) olarak açılacak ve sonlandırılıp yazma işlemi yapılacak mı, O_APPEND taklit edilerek mi yapılacak? Yoksa dosya O_APPEND olarak açılacak ve eklenmenin gerçekleşmesini sağlamak için çekirdeğe bırakılacak mı?
Bunu soruyorum, çünkü bir koruyucu işlem, çıktı dosyası NFS bağlama noktasından olduğunda eko tarafından eklenen bazı işaretleyicilerin üzerine yazıyor ve NFS Dokümantasyonu, O_APPEND'in sunucuda desteklenmediğini, bu nedenle istemci çekirdeğinin onu ele alması gerektiğini söylüyor. Sanırım koruyucu süreç O_APPEND kullanıyor, ancak linux'da baskı yapıldığından emin değil >>
, bu yüzden soruyu burada soruyorum.
O_APPEND
desteklenmiyor; Sorun taklit edilmesi. Yerel bir dosya sisteminde, açılmış aynı dosyaya yazılan birçok işlemO_APPEND
asla birbirlerinin verilerinin üzerine yazılmaz; NFS'de,O_APPEND
yarış öncesi olasılıkları bırakarak yazmadan önce sona ermesiyle öykünülür. NFS'de bununla ilgili hiçbir yol yok; Her paralel yazarın kendi dosyasını yazması gerekir. Bu sorunu çözmenin tek yolu, NFS sunucusundaki bir sunucu işlemini ayarlamak, günlüğe kaydedilenlerin günlüğe kaydedilmesini sağlamak|nc server port
ve sunucunun günlüğe gelen verileri eklemesini sağlamaktır.