2012-02-14 8 views
13

मानक लिनक्स libs में कोई फ़ंक्शन (या इंटरफ़ेस; ioctl, netlink इत्यादि) है जो वर्तमान माउंट को कर्नेल से सीधे पार्सिंग/proc के बिना वापस कर देगा? strace माउंट कमांड में, ऐसा लगता है कि यह/procमाउंट पॉइंट प्राप्त करने के लिए लिनक्स फ़ंक्शन

+0

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

+1

@Satish कि mounts एक filesystem- यह _current mounts_ – tMC

+4

वापस नहीं करता है तुम क्यों '/ proc /' से बचने के लिए चाहते हैं? ? लिनक्स के तहत, ऐसी जानकारी पुनर्प्राप्त करने का पसंदीदा तरीका है! और यह भी बहुत आसान है !! –

उत्तर

2

में इस जानकारी को सूचीबद्ध करने के लिए कोई सिस्कल नहीं है; इसके बजाय, आप इसे फ़ाइल में देख सकते हैं /etc/mtab

+0

mtab अधिकांश प्रणालियों पर केवल एक symlink/proc/माउंट है। – tMC

+0

सिम्लिंक या हार्ड लिंक? मुझे याद है कि पुराने दिनों में एमटीएबी विश्वसनीय नहीं था ... –

+0

@ टीएमसी: '/ proc/mounts' एक कार्यान्वयन विस्तार है। '/ etc/mtab' एक मानक फ़ाइल है जिसे आप लगभग किसी भी यूनिक्स-जैसी प्रणाली पर पाएंगे। मैंने जांच नहीं की लेकिन मुझे लगता है कि यह मानक का हिस्सा है। तो आप इस पर भरोसा कर सकते हैं। और मैं "ज्यादातर सिस्टम पर" नहीं कहूंगा। मेरे उबंटू और ओपनएसयूएसई सिस्टम में, यह एक सादा फाइल है। मेरे पास '/ proc/mounts' है लेकिन यह एक लिंक है :-) –

32

क्या कोई कारण है कि आप getmntent libc लाइब्रेरी कॉल का उपयोग नहीं करेंगे? मुझे एहसास है कि यह 'सब इन वन' सिस्टम कॉल के समान नहीं है, लेकिन इसे आपको प्रासंगिक जानकारी प्राप्त करने की अनुमति देनी चाहिए।

#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

मेरे पास एक एम्बेडेड सिस्टम है जो बूट के दौरान इस जानकारी का उपयोग कर सकता था; पहले/proc घुड़सवार था। – tMC

+1

'/ proc/mounts' के बजाय' df' और 'माउंट' दोनों '/ proc/self/mountinfo' का उपयोग करें, लेकिन परिणाम वही है। –

+1

ध्यान रखें कि 'getmntent' थ्रेड सुरक्षित नहीं है। 'Getmntent_r' (जीएनयू एक्सटेंशन) है। –

संबंधित मुद्दे