سؤال

ما أبحث عنه هو معنى هذا النوع وما هي الواجهة التي يمكن استخدامها.

تم توضيح ذلك في مواصفات Posix dev_t يستخدم لمعرفات الجهاز.ومع ذلك، ما الذي يعنيه معرف الجهاز لأي كائن موصوف بواسطة مسار، والذي يمكن أن يكون ملفًا أو دليلًا أو fifo أو جهازًا فعليًا؟

على سبيل المثال، الدعوة stat() يجب أن تعطيك بنية تتضمن عضوًا من هذا النوع؛ويمكنك تحديد أي نوع من الكائنات في نظام الملفات الخاص بك.يجب أن يكون لمعرف الجهاز معاني مختلفة لأنواع الملفات المختلفة.

هل كانت مفيدة؟

المحلول

الاستخدام الوحيد ل dev_t في الغالبية العظمى من البرامج (تلك البرامج المحمولة وغير المتصلة بنظام تشغيل واحد) يتم تحديد أن اسمي ملفين أو واصفي ملف يشيران إلى نفس الملف الأساسي.وهذا صحيح إذا وفقط إذا st_ino و st_dev إدخالات للملفين stat الهياكل تتطابق مع بعضها البعض.

أساسًا، st_dev يخبرنا عن "الجهاز" (على سبيل المثالالقسم المُثبت، ومشاركة الشبكة، وما إلى ذلك) يوجد الملف عليه، و st_ino هو معرف فريد للملف ضمن سياق جهاز واحد.

نصائح أخرى

في الواقع، هناك اثنان dev_t-الحقول المكتوبة في struct stat:

  • st_dev هو "[د] معرف الجهاز الذي يحتوي على ملف"، لذلك إذا كان هناك ملفان لهما نفس الشيء st_dev, ، فهما موجودان على نفس نظام الملفات.
  • st_rdev هو معرف الجهاز الخاص بالجهاز الذي يُشار إليه بحرف أو ملف خاص بلوك، على سبيل المثال.الملفات التي يتم مواجهتها بشكل شائع في /dev.ليس له معنى بالنسبة لأنواع أخرى من الملفات.

داخل kernel، يتم استخدام نوع DEV_T الذي يعرف فيه لعقد أرقام الجهاز (الرئيسية / القاصر).DEV_T هو كمية 32 بت مع 12 بت توضع جانبا للرقم الرئيسي و 20 للرقم البسيط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top