سؤال

وبطبيعة الحال، فإن الإجابة الفورية لمعظم الحالات هي على "نعم" ، أو وأنا من أشد المؤمنين بأن عملية يجب تنظيف بشكل صحيح أي موارد خصصت ذلك، ولكن ما قلته في وضعي ومنذ فترة طويلة الخفي النظام الذي يفتح على عدد ثابت من واصفات الملف في بدء التشغيل، ويغلق كل منهم قبل أن تغادر.

وهذا هو منصة جزءا لا يتجزأ، وأنا أحاول أن جعل رمز العدد قدر الإمكان، في حين أن عدم فرض أي أسلوب سيئة. ولكن منذ مغلقة واصفات الملف قبل الخروج على أي حال، هل هذا الملف واصف رمز تنظيف تخدم أي غرض؟ هل دائما إغلاق كافة اصفات الملف الخاص بك؟

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

المحلول

واصفات ملف الإنتهاء عند الانتهاء من استخدامها يجعل التعليمات البرمجية أكثر قابلة لإعادة الاستخدام وأسهل للتمديد. هذا يبدو لي وكأنه حالة ما إذا كان لديك سبب وجيه لالسماح لهم الحصول على أغلقت تلقائيا.

نصائح أخرى

نعم، أغلق اصفات الملف ومجانية طوال كومة الذاكرة، حتى لو كنت تعرف أن نظام التشغيل وتنظيفه - وبهذه الطريقة، عند تشغيل valgrind أو بعض أداة مماثلة، كنت لا تحصل على الكثير من الضوضاء في النتائج، ويمكنك التعرف بسهولة "شرعي" التسريبات FD.

في العالم جميلة من منصة جزءا لا يتجزأ، فإنه من الصعب حقا أن أقول ما يحدث شأنه. ومع ذلك، إذا كنت في الوضع الخاص بك، أريد فقط يدويا اختبار لمعرفة ما إذا كان يتم الإفراج عن ID ملف حقا .. وإذا كان الفضاء هو أن المهم، ربما يمكن أن توثق هذه الحقيقة في مكان آخر.

والقلق واحد كنت أود أن يكون فيما يتعلق ترك تغلق ملف واصفات لتنظيف التلقائي، سيكون وكم كنت يهتمون أية بيانات كنت قد كتبت لوقال الملفات واصفات وإذا كنت معقول يمكن التعامل مع الفشل في الكتابة.

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

وباعتراف الجميع، وهذا هو الحال الزاوية حيث كنت تهتم حقا حول اتساق البيانات، أي نوع DBMS التطبيقات أو الإبلاغ عن نجاح وظائف / فشل النسخ الاحتياطي. في كثير من (معظم؟) من الحالات، لا يهم حقا كل ذلك بكثير، وسوف يكون على ما يرام ترك إيقاف قريب () لمعالجة تنظيف / الخروج.

والرجل 3 الخروج:

....
All open stdio(3) streams are flushed and closed.  Files created by tmpfile(3) are removed.

لذلك أعتقد ترك الرئيسي يدعو على نحو فعال وظيفة الخروج مع قيمة الإرجاع الرئيسية في. على الرغم من أنني أزعم أنه أسلوب سيئة. شخصيا، أنا <م> دائما حرة صراحة / إغلاق أي موارد مكتسبة.

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