द्वारा डिवाइस ध्वज प्राप्त करें आशा है कि आप मेरी मदद कर सकते हैं: मैं यह निर्धारित करने की कोशिश कर रहा हूं कि डिवाइस हटाने योग्य है या नहीं, मेरे पास डिवाइस का नाम (/ dev/sdc) है। असल में, मुझे यह निर्धारित करने की आवश्यकता है कि फ़ाइल को हटाने योग्य मीडिया या स्थानीय डिस्क पर फ़ाइल इस फ़ाइल के पूर्ण पथ से कब होगी।डिवाइस नाम
मैं current-> FS-> pwd में खोज करने के लिए tryed है और सब मैं मिल सकता है झंडे का एक सेट यहाँ है: * current-> FS-> pwd.mnt-> mnt_sb- > s_bdev-> bd_disk-> झंडे * जहां हटाने योग्य उपकरणों
लेकिन मैं हमेशा एक ही झंडे सेट (के रूप में मैं समझता हूँ, s_bdev हमेशा एक ही डिवाइस (/ dev/sda) को इंगित करता है) के लिए GENHD_FL_REMOVABLE सेट।
तो अब मुझे डिवाइस का नाम (/ dev/sdc) मिलता है जिसमें mtab को पार्स करके मेरी फ़ाइल होती है, लेकिन अभी भी यह पता नहीं लगाया जा सकता है, इसे हटाया जा सकता है या नहीं।
क्या डिवाइस नाम से block_device संरचना प्राप्त करने का कोई संभावित तरीका है? (उदाहरण के लिए, "फाइल" संरचना बुला fd = खुला ("नाम") fl = fged (FD) द्वारा प्राप्त किया जा सकता है, जहां fl अंक "फाइल" संरचना करने के लिए)
धन्यवाद, ऐसा लगता है कि यह मेरी समस्या हल करता है – Makc
तो, इस तरह से, मैं यह निर्धारित कर सकता हूं कि ब्लॉक फ़ाइल में से कौन सा ब्लॉक मेरी खुली फ़ाइल में है यदि मेरे पास इस फ़ाइल का केवल पूरा पथ है। – Makc
@Makc: मुझे लगता है कि आप 'vfs_stat' का उपयोग कर सकते हैं, यह आपको' struct kstat' देगा जिसमें आप 'dev_t' को ब्लॉक डिवाइस से तुलना करने में सक्षम होंगे। – Hasturkun