سؤال

عند إنشاء مأخذ توصيل باستخدام قبول() وجعل الملف باستخدام fdopen () ، ماذا علي أن أفعل كل شيء نظيف ؟ هل أنا بحاجة للقيام fclose() على الملف إيقاف التشغيل() وبالقرب من() على المقبس أو إيقاف التشغيل() أو close() أو fclose()?إذا كنت لا تفعل fclose () ، هل يجب أن حر() مؤشر الملف يدويا ؟

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

المحلول

من رجل fdopen:

ملف واصف ليس dup رائد, و سوف تكون مغلقة عند تيار إنشاؤه من قبل fdopen() مغلق

لذلك أود أن مجرد استخدام fclose () ، وهو أيضا يغلق الملف الأساسي واصف.أنا لا أعرف ما إذا كان إيقاف التشغيل() ضروري أيضا.

نصائح أخرى

من http://opengroup.org/onlinepubs/007908775/xsh/fclose.html

على fclose() وظيفة سيتم تنفيذ close() على ملف واصف التي المرتبطة تيار أشار إلى من قبل تيار.

إذا كنت ملفوفة مأخذ في تيار ربما لم يعد من المنطقي أن إيقاف التشغيل () ، على الأقل ليس دون بيغ تيار الأولى.ولكن أنا لن أقسم على ذلك, لأنني لا أعرف أن هناك لا يستخدم حيث كنت ترغب في إيقاف تشغيل() بدلا من مجرد close().

لديك 2 الأشياء هنا تحتاج إلى تنظيف:تيار يمثله FILE الملف واصف ممثلة في المقبس.تحتاج إلى إغلاق تيار أولا ، ثم ملف واصف.حتى في العام سوف تحتاج إلى fclose() أي FILE الكائنات ، ثم close() أي واصفات الملفات.

شخصيا لم يسبق لي استخدامها shutdown() عندما كنت ترغب في تنظيف بعد نفسي حتى لا أستطيع أن أقول.

تحرير

آخرون صحيح وأشار إلى أن fdclose() سيتم أيضا إغلاق الملف الأساسي واصف ، ومنذ الدعوة close() على إغلاق ملف واصف سوف يؤدي إلى خطأ في هذه الحالة تحتاج فقط fdclose().

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