2012-02-14 15 views
13

Standart Linux lib'lerinde, ayrıştırma/proc olmadan, doğrudan çekirdekten gelen çekirdekleri döndürecek bir işlev (veya arabirim; ioctl, netlink vb) var mı? strace mount komutuyla,/proc içindeki dosyaları ayrıştırıyor gibi görünüyorBağlantı noktaları almak için Linux işlevi

+0

http://stackoverflow.com/questions/5095976/mount-system-call – Satish

+1

@Satish o _current mounts_ – tMC

+4

dönmez bir dosya sistemini Neden '/ proc /' kaçınmak istiyoruz monte eden o? ? linux altında, bu bilgileri almak için tercih edilen yoldur! Ve çok basit! –

cevap

2

Bu bilgiyi listelemek için bir sistem çağrısı yok; bunun yerine, dosyayı /etc/mtab

+0

mtab, çoğu sistemde/proc/mounts için bir bağlantıdır. – tMC

+0

symlink veya sabit link? Hatırlıyorum ki eski günlerde mtab güvenilir değildi ... –

+0

@tMC: '/ proc/mounts' bir uygulama detayıdır. '/ etc/mtab' hemen hemen tüm Unix benzeri sistemlerde bulabileceğiniz standart bir dosyadır. Kontrol etmedim ama bence bu standardın bir parçası. Yani ona güvenebilirsin. Ve "çoğu sistemde" demem. Ubuntu ve OpenSuSE sistemlerimde düz bir dosya./Proc/mounts 'var ama bu bir bağlantı var :-) –

32

dosyasında bulabilirsiniz getmntent libc kitaplığı çağrısını kullanmamanız için herhangi bir neden var mı? 'Hepsi bir arada' sistem çağrısıyla aynı olmadığını, ancak ilgili bilgileri almanızı sağladığını anlıyorum.

#include <stdio.h> 
#include <stdlib.h> 
#include <mntent.h> 

int main(void) 
{ 
    struct mntent *ent; 
    FILE *aFile; 

    aFile = setmntent("/proc/mounts", "r"); 
    if (aFile == NULL) { 
    perror("setmntent"); 
    exit(1); 
    } 
    while (NULL != (ent = getmntent(aFile))) { 
    printf("%s %s\n", ent->mnt_fsname, ent->mnt_dir); 
    } 
    endmntent(aFile); 
} 
+0

Önyükleme sırasında bu bilgileri kullanmış olabilecek bir yerleşik sistemim var; önce/proc monte edildi. – tMC

+1

Her ikisi de 'df' ve' mount' '/ proc/mounts' yerine'/proc/self/mountinfo' kullanır, ancak sonuç aynıdır. –

+1

"getmntent" iş parçacığının güvenli olmadığını unutmayın. Getmntent_r (GNU uzantısı) var. –

İlgili konular