यहां एक बहुत ही बुनियादी FUSE कार्यान्वयन के an example है जो एक गौरवशाली साझा मेमोरी सेगमेंट (xenstore) द्वारा समर्थित है। यह मूल xenstore FUSE फ़ाइल सिस्टम का एक कांटा है जिसे मैं बनाए रखता हूं।
आपको यह दिखाने के लिए कुछ कोड भी मिलेगा कि FUSE कार्यान्वयन को डीबग करते समय वालग्रिंड को और अधिक सहायक कैसे बनाया जाए।
आप खुला/बनाएँ/पठन/लेखन/truncate के लिए कार्य लिखने/getattr/आदि और उन्हें फ्यूज करने के लिए पारित (लाइन नंबर से जुड़ा हुआ उदाहरण से कर रहे हैं):
343 static struct fuse_operations const xsfs_ops = {
344 .getattr = xsfs_getattr,
345 .mknod = xsfs_mknod,
346 .mkdir = xsfs_mkdir,
347 .unlink = xsfs_rm,
348 .rmdir = xsfs_rmdir,
349 .truncate = xsfs_truncate,
350 .open = xsfs_open,
351 .read = xsfs_read,
352 .write = xsfs_write,
353 .readdir = xsfs_readdir,
354 .create = xsfs_create,
355 .destroy = xsfs_destroy,
356 .utime = xsfs_utime,
357 .symlink = xsfs_symlink,
358 .init = (void *)xsfs_init
359 };
आप देख सकते हैं, अपनी बेहद आत्म व्याख्यात्मक थोड़ी सी खोज के परिणामस्वरूप एफयूएसई कार्यान्वयन के कई बुनियादी फाइल समर्थित उदाहरण भी मिलेंगे।
मैं अत्यधिक पूरी तरह से उपयोगकर्ता स्थान में ऐसा करने की अनुशंसा करता हूं, जब तक आपके पास कर्नेल के साथ पर्याप्त परिचित होने के लिए पर्याप्त समय न हो।
स्रोत
2010-02-04 10:41:14
क्या हम यहां कुछ धारणाएं कर सकते हैं: हम वास्तविक फाइल सिस्टम नहीं बना रहे हैं: यानी, हम चीज़ों को देखने के लिए सामान्य एलएस या डीआईआर कमांड का उपयोग करने की उम्मीद नहीं कर रहे हैं। इसके बजाए हम एक ऐसी सेवा को कार्यान्वित कर रहे हैं जो एक सॉकेट पर एक कस्टम इंटरफ़ेस के माध्यम से फ़ाइलों को उजागर करता है। हम सर्वर और क्लाइंट पुस्तकालय दोनों लिख रहे हैं। सर्वर के लिए डेटा एक फ़ाइल के भीतर संग्रहीत किया जाता है। क्या यह सही है? –
इसी तरह के थोड़ा अधिक सामान्य प्रश्न: http://stackoverflow.com/questions/4714056/how-to-implement-a-very-simple-filesystem –