وظيفة Fstat في C.

Wzyft Fstat Fy C



تستدعي الدالة fstat () النظام لإرجاع المعلومات (بخصوص بعض الملفات) التي تعتمد على واصف هذا الملف. تحصل هذه الوظيفة على معلومات الملف المرتبط بواصف الملف المعروف أيضًا باسم 'fildes' ثم تكتب هذه المعلومات في موقع الذاكرة الذي يشير إليه المخزن المؤقت. نوع الإرجاع لهذه الوظيفة هو عدد صحيح. تقوم بإرجاع القيمة '0' إذا تم تنفيذ البرنامج بنجاح. خلاف ذلك ، فإنه يعيد '-1' إلى الوظيفة في حالة فشل التنفيذ. يمكن أن يرجع خطأ تنفيذ هذه الوظيفة إلى بعض الأسباب المحددة ، مثل ما إذا كانت ملفات الوظيفة تحتوي على واصف غير صالح للملف ، وإذا حدث خطأ القراءة للإدخال والإخراج من الملف ، وإذا كان موقع الذاكرة (الهيكل) حيث يشير المخزن المؤقت إلى كتابة معلومات الملف لا تحتوي على ذاكرة مخصصة كافية لحجم الملف.

إجراء

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







بناء الجملة

تم ذكر طريقة التصريح عن وظيفة fstat () التي تمكن البرنامج من الوصول إلى معلومات الملف في السطر التالي:



$ # تضمين
$ int حالة ( int فيلدس و هيكل ستات * بوف ) ؛

عندما يتعين علينا استدعاء الوظيفة في برنامجنا ، يتعين علينا استيراد ملفات الرأس أولاً التي تدعم هذه الوظيفة باسم 'sys / stat.h'. نوع الإرجاع للوظيفة هو دائمًا 'int' والمعلمة تتضمن 'fildes' بنوع البيانات 'int'. Fildes هو واصف للملف الذي نريد معرفة المعلومات عنه. المعلمة الأخرى التي يتم إعطاؤها للوظيفة هي المؤشر 'buf'. إنه مؤشر 'Struct Stat' الذي يشير إلى الهيكل الذي نريد تخزين البيانات حول الملف فيه. هذا وصف موجز لمعلمات الإدخال لوظيفة fstat ().



مثال

نستخدم الوصف المذكور سابقًا وننفذ برنامجًا للحصول على معلومات حول أي / ملف محدد من خلال برنامجنا. نكتب هذا البرنامج في مترجم Microsoft Visual Studio C للتنفيذ. نبدأ بالمثال بإنشاء مشروع أولاً ثم إضافته إلى مستودعات C في Visual Studio. لإضافة المشروع إلى ملفات C ، نقوم بتضمين '.c' مع اسم المشروع وإضافته إلى ملف المصدر الخاص بالمشروع. الخطوة التالية بعد إنشاء المشروع هي استدعاء جميع المكتبات المطلوبة للوظائف التي قد نستخدمها لاحقًا في البرنامج. نظرًا لأننا نطبق المثال الخاص بوظيفة fstat () في هذه المقالة ، يتعين علينا تضمين ملف الرأس 'sys / stat.h'. للحصول على معلومات الملف ، نحتاج إلى معرفة نوع الجهاز حيث يوجد الملف. لمعرفة نوع البيانات للجهاز ، نقوم بتضمين الرأس “type. h 'في البرنامج.





يجب أن تتضمن معلومات الملف الوقت الذي تم فيه فتح الملف آخر مرة والتعديل الذي تم إجراؤه فيه. للوصول إلى وظائف استدعاء الوقت هذه ، نضيف ملف الرأس “times. h 'و' fcntl. h ”لمهام إذن الملف. العنوان الأخير 'stdio. h ”مدرج أيضًا في البرنامج لاستدعاء أساليب printf () و scanf () في البرنامج. ملفات الرأس التي ناقشناها ليتم تضمينها في البرنامج هي كما يلي:

$ # تضمين
$ # تضمين
$ # تضمين
$ # تضمين
$ # تضمين

بعد أن يتم استيراد ملفات الرأس المذكورة سابقًا بنجاح إلى البرنامج ، نقوم الآن ببناء البرنامج للحصول على معلومات حول ملف معين. نعلن أن الوظيفة التي لها نوع الإرجاع 'int' بالاسم 'main'. في هذه الوظيفة الرئيسية ، نعلن عن مصفوفة 'char' ونخصص لها اسم الملف الذي نحتاج إلى معرفة معلومات عنه. بعد ذلك ، نحدد 'معلومات إحصائية' بنوع البيانات 'هيكل'. هذا الهيكل هو مكان نقوم فيه بتخزين المعلومات حول الملف.



ثم نقوم بتعريف متغير آخر باسم 'file_descriptor' بنوع البيانات 'عدد صحيح'. في حالة 'if' ، نطلب إذنًا لعمليات القراءة والكتابة للملف إذا كان موجودًا ، ونمرر 'S_IWUSR' واسم المصفوفة إلى الوظيفة 'create ()' التي تستدعي أذونات الملف إذا موجود أو إنشاء ملف جديد خلاف ذلك. نقوم بتمرير وظيفة create () هذه إلى 'if condition' التي تنص على ما إذا كانت قيمة دالة create () أقل من الصفر ، ثم تنشئ خطأ أن الملف يحتاج إلى الإنشاء. إذا كانت fstat () مع معلمات مثل 'file_descriptor' و 'information' و 'عنوان الموقع حيث يتم تخزين معلومات الملف' لا تساوي الصفر ، فإننا نعرض fstat () القيمة التي تم إرجاعها وهي معلومات الملف . ونطبع المعلومات في شكل سمات ، على سبيل المثال معرّف الجهاز الذي يتم فيه تخزين الملف ، ورقم Inode للجهاز ، ووضع الحماية للملف ، ومعرف المستخدم ، ومعرف المجموعة ورقم الارتباط (النموذج الثابت).

بعد عرض هذه السمات ، نخرج من العبارات ونغلق الملف باستخدام طريقة close (). بعد ذلك ، قم بفك ارتباط الملف عن طريق استدعاء طريقة uncink ().

# تضمين
# تضمين
# تضمين
# تضمين
# تضمين

رئيسي ( ) {
شار مجموعة مصفوفة [ ] = 'ملف amp.' ؛
هيكل معلومات احصائية ؛
int محرر الملف ؛
إذا ( ( محرر الملف = مصنوع ( مجموعة مصفوفة و S_IWUSR ) ) < 0 )
رعب ( 'إنشاء () خطأ' ) ؛
آخر {
إذا ( حالة ( محرر الملف و & معلومة ) ! = 0 )
رعب ( 'خطأ fstat ()' ) ؛
آخر {
يضع ( قيم 'fstat ():' ) ؛
printf ( 'inode:٪ d ' و ( int ) معلومات. st_ino ) ؛
printf ( 'معرف الجهاز:٪ d ' و ( int ) معلومات. st_dev ) ؛
printf ( 'وضع الجهاز:٪ 08x ' و معلومات. st_mode ) ؛
printf ( 'no_of_hard_links:٪ d ' و معلومات. st_nlink ) ؛
printf ( 'u_id:٪ d ' و ( int ) معلومات. st_uid ) ؛
printf ( 'g_id:٪ d ' و ( int ) معلومات. st_gid ) ؛
}
أغلق ( محرر الملف ) ؛
فك الارتباط ( مجموعة مصفوفة ) ؛
}
}

سيقوم البرنامج أولاً بالوصول إلى الإذن الخاص بتشغيل الملف ثم يقرأ البيانات الموجودة فيه ويكتبها في موقع الذاكرة المخصص. تظهر السمات التي قدمناها للبرنامج لعرضها من الملف في الإخراج.

استنتاج

استخدمنا وظيفة fstat () للوصول إلى معلومات الملف. تعلمنا أولاً صيغة الدالة fstat () الموضحة مع الوصف الكامل لمعلمات الوظيفة. بعد ذلك ، كتبنا برنامجًا لهذه الوظيفة حيث وصلنا أولاً إلى إذن مالك الملف الخاص بنا ثم قرأنا الملف وعرضنا السمات التي أردناها من معلومات الملف. لقد بذلنا قصارى جهدنا للسماح لك بفهم مفهوم fstat () ونأمل أن يساعدك ذلك في برامجك.