Linux ya da Mac OS X gibi bir POSIX sistemim varsa, bir yolun salt okunur dosya sisteminde olup olmadığını belirlemenin en iyi ve en taşınabilir yolu nedir? Kafamın üst kapalı 4 yollar geliyor:Bir dosya sisteminin monte edilip edilmediğini belirlemek için en iyi POSIX yolu okunabilir
open(2)
bir dosyaO_WRONLY
ile - Sen benzersiz dosya adı ile gelip ve ayrıcaO_CREAT
veO_EXCL
geçmek gerekir. Başarısız olursa veEROFS
errno'unuz varsa, bunun salt okunur dosya sistemi olduğunu bilirsiniz. Bu, umursamadığınız bir dosyayı oluşturmanın can sıkıcı yan etkisine sahip olurdu, ancak bunu oluşturduktan hemen sonraunlink(2)
yapabilirdiniz.statvfs(3)
- döndüstruct statvfs
alanlarında birif_flag
ve bu seçeneklerden biri salt okunur bir dosya sistemi içinST_RDONLY
olduğunu. Bununla birlikte,statvfs(3)
için özellik, uygulamaların geçerli bilgi içeren alanlardan herhangi birine bağlı olamayacağını açıkça belirtir. Okumak bir dosya sistemi içinST_RDONLY
ayarlanmayabilir iyi bir olasılık var gibi görünüyor.access(2)
- Eğer bağlama noktası biliyorsanız Bağlama noktasına yazma erişimine sahip olacak bir kullanıcı olarak çalışan olarak, süreceW_OK
bayrağıylaaccess(2)
kullanabilirsiniz. Yani ya kötüsünüz ya da UID'nizle bir mount parametresi olarak monte edilmişsiniz. -1 dönüş değeri veEROFS
errno alırsınız.Ayrıştırma
/etc/mtab
veya/proc/mounts
- Taşınabilir görünmüyor. Mac OS X'in bunlardan hiçbiri yok gibi görünüyor. Sistem/etc/mtab
olsa bile, alanların OS'ler arasında tutarlı olup olmadığından ya da salt okunur için mount seçenekleri (Linux'taro
) taşınabilir olmadığından emin değilim.
Eksik olduğum başka yollar var mı? Bir dosya sisteminin salt okunur bir şekilde monte edilip edilmediğini bilmek gerekirse, bunu nasıl yapacaksınız?
Mtab üzerinde, bir dosya sistemi rw'ye bağlanırsa ancak daha sonra devam ederse, mtab güncellenmez./proc/mounts doğru şekilde güncellenir. – Ryaner