mtab
Önceki Bağlama Bilgileri Sonraki
mtab
Aşağıdaki işlevler ve veri yapısı mtab dosyasına erişim için kullanılır.
struct mntent
veri türü
Bu yapı getmntent, getmntent_t, addmntent ve hasmntopt işlevleriyle kullanılır.
char *mnt_fsname
Bu eleman bağlı dosya sistemini içeren özel aygıtın ismi olan bir dizgeye bir gösterici içerir. Bu eleman struct fstab yapısının fs_spec üyesinin karşılığıdır.
char *mnt_dir
Dosya sisteminin bağlama noktasını belirten dizgeye bir göstericidir. Bu eleman struct fstab yapısının fs_file üyesinin karşılığıdır.
char *mnt_type
mnt_type dosya sistemini açıklar ve struct fstab yapısının fs_vfstype üyesinin karşılığıdır. Bu dizgenin içerebileceği sabitler mntent.h dosyasında tanımlanmıştır. Fakat çekirdek dosya sistemlerini keyfi isimlerle destekleyebildiğinden bunları sembolik isimler olarak vermenin bir yararı yoktur. Sembolik ismi bilen biri dosya sistemi ismini de bilir ve bu sembollerin listesini mntent.h dosyasında bulabilirsiniz.
MNTTYPE_IGNORE
Bu sembol "ignore" dizgesinin karşılığıdır. Değer kimi zaman fstab dosyasındaki bir girdiyi silmeden kullanılamaz duruma getirmek için kullanılır.
MNTTYPE_NFS
"nfs" dizgesinin karşılığıdır. Bu makronun kullanımı, öntanımlı NFS gerçeklemesi ile ilgilidir ve 2. ve 3. sürümleri desteklemektedir.
MNTTYPE_SWAP
Bu sembol "swap" dizgesinin karşılığıdır. fstab dosyasında çok sayıda olabilen takas bölümleri ile ilgili girdileri isimlendirir.
char *mnt_opts
Bu eleman dosya sistemi bağlanırken kullanılan seçenekleri içeren bir dizgedir. struct fstab yapısının fs_mntops üyesinin karşılığı olarak bu dizgenin parçalarına erişmek için getsubopt işlevini kullanmak en iyi yöntemdir; bkz. Alt Seçeneklerin Çözümlenmesi.
mntent.h dosyasında, çekirdek tarafından anlamlandırılabilen bazı seçeneklerin karşılığı olan dizge değerli makrolar tanımlanmıştır. Bu makrolarla kapsanmayan başka seçenekler de olabilir, bunlar mevcut olanların listesidir:
MNTOPT_DEFAULTS
"defaults" dizgesinin karşılığıdır. Bu seçenek tek başına kullanılır, çünkü özelleştirilebilir değerlerin uygun seçilmesi ile oluşturulan bir dizgenin öntanımlı karşılığıdır.
MNTOPT_RO
"ro" dizgesinin karşılığıdır. Dosya sisteminin salt okunur bağlanması anlamına gelen FSTAB_RO değerine bakınız.
MNTOPT_RW
"rw" dizgesinin karşılığıdır. Dosya sisteminin oku/yaz erişimiyle bağlanması anlamına gelen FSTAB_RW değerine bakınız.
MNTOPT_SUID
"suid" dizgesinin karşılığıdır. Dosya sisteminden bir uygulama başlatıldığında SUID bitine riayet edilecek anlamındadır; bkz. Bir Sürecin Aidiyeti Nasıl Değiştirilir?.
MNTOPT_NOSUID
"nosuid" dizgesinin karşılığıdır. Dosya sisteminden bir uygulama başlatıldığında SUID biti yoksayılacak anlamında olup MNTOPT_SUID makrosunun zıddıdır.
MNTOPT_NOAUTO
"noauto" dizgesinin karşılığıdır. Sistem açılışında mount uygulaması fstab dosyasındaki tüm bağlanabilir dosya sistemlerini bağlamasını belirten -a seçeneği ile çalıştırıldığında bu girdi yoksayılacaktır.
Önceki bölümlerde FSTAB_* girdilerinde bahsedildiği gibi eşitlik sınaması yapmak için strcmp kullanılması önemlidir.
mnt_freq
Bu eleman fs_freq'in karşılığıdır ve ayrıca dökümlemenin yapılma sıklığını gün cinsinden belirtir.
mnt_passno
dump gibi uygulamaların bu dosya sistemi ile ilgilenmemesi anlamında olan fs_passno'nun karşılığıdır.
mtab dosyasının içeriğinin tamamının okunması amacıyla GNU C kütüphanesi birbiriyle uyumlu çalışan üç işlev içerir. fstab dosyası ile çalışan işlevelerin tersine bu işlevler bir sabit dosyaya erişmez ve ayrıca get işlevlerinin evresel sürümleri de vardır. Bunun yanında GNU C kütüphanesi dosyayı değiştirmek ve bazı seçenekleri sınamak için de işlevler içerir.
FILE *setmntent
(const char *dosya,
 const char *kip)
işlev
setmntent işlevi, ailenin diğer işlevlerinin ihtiyaçlarına uygun olarak kullanılmak üzere fstab ve mtab biçiminde dosya isimli dosyayı hazırlar. kip parameresi fopen işlevinin açıştürü parametrsinin seçiminde kullanılan yolla seçilebilir (bkz. Akımların Açılması). Eğer dosya yazma amacıyla açılıyorsa ayrıca boş olmasına da izin verilir.
İşlev dosyayı başarıyla açmışsa kullanılacak akım ile döner. Aksi takdirde NULL döner ve hata durumu errno değişkenine atanır.
int endmntent
(FILE *akım)
işlev
Bu işlev önceki bir setmntent çağrısından dönen akım akımını kapatır ve tüm özkaynaklarını serbest bırakır.
Hata durumunda 0 aksi takdirde 1 ile döner.
struct mntent *getmntent
(FILE *akım)
işlev
Bu işlev önceki bir setmntent çağrısından dönen akım akımını argüman olarak alır ve dosyadan sonraki girdiyi içeren struct mntent türünde bir değişkene gösterici ile döner.
Kullanılan dosya biçimi gereğince alanları ayırmak için boşluklar ve sekme karakterleri kullanılır. Bu durum, bu karakterleri içeren isimlerin kullanılmasını güçleştirir. Bu bakımdan bu karakterleri dosyalarda kodlarken ve getmntent işlevinde çözümlerken dikkatli olunmalıdır. Bir boşluk karakteri '\040' ile, bir sekme karakteri '\011' ile, satırsonu karakteri '\012' ile ve tersbölü karakteri '\\' ile kodlanır.
Bir hata oluşursa ya da dosya sonuna gelinmişse işlev NULL ile döner.
Bu işlevin çağrıları aynı durağan değişkene bir gösterici ile döndüğünden işlev evresel değildir. Dosyaya çok evreli erişim için getmntent_r işlevi kullanılmalıdır.
struct mntent *getmntent_r
(FILE           *akım,
 struct mentent *sonuç,
 char           *tampon,
 int             tamponboyu)
işlev
getmntent_r işlevi getmntent işlevinin evresel benzeridir. Ayrıca dosyadaki sonraki girdiye bir gösterici ile döner. Döndürdüğü değişken aslında durağan değildir. Döndürdüğü değeri sonuç parametresi ile belirtilen göstericinin gösterdiği değişkende saklar. Ek bilgiler (sonucun elemanları ile gösterilen dizgeler) uzunluğu tamponboyu kadar olan tampon tamponunda saklanır.
Öncelemeli karakterler (boşluk, sekme, tersbölü) getmentent işlevindeki gibi geri dönüştürülür.
İşlev bir hata durmunda bir boş gösterici ile döner. Olası hatalar:
  • dosya okunurken hata oluştu,
  • dosyanın sonuna gelindi,
  • tamponboyu tam bir girdiyi okumak için yetersiz.
int addmntent
(FILE                *akım,
 const struct mntent *girdi)
işlev
addmntent işlevi önceki bir setmntent çağrısı ile açılan dosyaya yeni bir girdi eklemeye imkan verir. Yeni girdi daima dosyanın sonuna eklenir. Yani dosya konumlayıcı dosyanın sonunda olmasa bile bu işlev girdiyi dosya konumlayıcının bulunduğu yere değil daima dosyanın sonuna yazar.
Bunun sonucu olarak bir dosyadan bir girdiyi silmek için bu girdiyi içermeyen  yeni bir dosya oluşturmak, bu dosyayı kapatmak ve eski dosyayı silip yeni dosyanın adını eskisi olarak değiştirmek gerekir.
Bu işlev isimlerin içindeki boşluklar ve sekmeler bakımından dikkatlidir. Bunları ve tersbölü karakterlerini evvelce getmntent işlevinde açıklandığı gibi dönüştürür.
İşlev başarı durumunda 0, aksi takdirde 1 değeri ile döner ve hata durumu errno değişkenine atanır.
char *hasmntopt
(const struct mntent *girdi,
 const char          *seçenek)
işlev
Bu işlev, girdi ile gösterilen yapının mnt_opts elemanının içerdiği dizgede seçenek dizgesi var mı diye bakar. seçenek bir boş gösterici değilse mnt_opts içindeki seçeneğin başlangıcına bir gösterici ile döner. Böyle bir seçenek yoksa işlev boş gösterici döndürür.
Bu işlev belli bir seçeneğin varlığını sınamak için kullanışlıdır ama tüm seçenekler işlenmek zorunda olduğunda dizgedeki tüm seçenekler üzerinde yinelenen getsubopt işlevini kullanmak daha iyidir.
Önceki Üst Ana Başlık Sonraki
fstab Başlangıç Bağlama, Ayırma, Yeniden Bağlama
Bir Linux Kitaplığı Sayfası