معلومات إضافية: fflush () & flushall() عدم كتابة البيانات مباشرة إلى القرص

ملخص


عدم كتابة الدالات fflush () و flushall() في مكتبة وقت تشغيل C تغييرات الملف مباشرة إلى القرص. هذه الدالات مسح الملفات المؤقتة التي تقدمها المكتبة؛ لا يمكن مسح المخازن المؤقتة توفر أنظمة التشغيل MS-DOS أو OS/2 أو نظام التشغيل Windows NT على مستوى النظام. على سبيل المثال، إذا كان أحد تطبيقات باستدعاء fflush () ولكن لا يكتب MS-DOS المخازن المؤقتة الخاصة به إلى القرص قبل تعطل النظام (أو الأحداث المكافئة)، معلومات قد لا تزال تفقد. ولمعالجة هذه الحالة في MS-DOS، استخدم الدالة _commit() بعد استدعاء fflush () أو fflushall(). يؤدي الاتصال _commit() لمسح المخزن المؤقت المقترنة بمؤشر ملف قرص نظام التشغيل.


يوفر نظام التشغيل OS/2 مهمتين منفصلتين، استناداً إلى الإصدار المثبت من OS/2. في 16 بت OS/2 (الإصدارات 1.x)، استخدم الدالة DosBufReset(). في 32 بت OS/2 (الإصدار 2.0), استخدم الدالة DosResetBuffer().


يوفر نظام التشغيل Windows NT FlushFileBuffers() واجهة برمجة تطبيقات WIN32. تضمين دالة _commit() مع اتصالات CRT إصدار Visual c + + 32 بت فلوشفيليبوفيرس لكتابة بيانات مخزنة على القرص.


يقدم الإصدار 7.0 من Microsoft C/c + + هو خيار الوضع "c" للدالة fopen (). عند فتح ملف تطبيق وتحديد وضع "جيم"، كتابة مكتبة وقت تشغيل محتويات المخزن المؤقت الملف إلى القرص عند استدعاء التطبيق للدالة fflush () أو _flushall(). خيار الوضع "c" ملحق Microsoft وليس جزءا من ANSI القياسية ل fopen ().


لتغيير السلوك الافتراضي للوظائف fflush () و _flushall()، ربط التطبيق الخاص بك باستخدام صوان. ملف OBJ المقدمة من المنتجات المسردة في بداية هذه المقالة. صوان. تغيير الكائنات العلم الالتزام العالمي باستدعاء fflush () أو _flushall() يرتكب في المخزن المؤقت للملف إلى القرص. تعلم هذه العلامة fflush () لاستدعاء _commit() لمسح الملف مستوى منخفض عندما يتم مسح الدفق و _commit() في _dos_commit() المكالمات تشغيل ملف مستوى MS-DOS. بشكل افتراضي مسح دفق لا يمكن مسح المستوى المنخفض وملفات مستوى MS-DOS.

خصائص

رقم الموضوع: 66052 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات