ما هي أفضل طريقة للقيام باستبدال الملفات الذرية في بيرل؟

StackOverflow https://stackoverflow.com/questions/392016

سؤال

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

الآن أفعل ذلك عن طريق كتابة ملف TEMP بنفس الدليل ثم إعادة تسمية ملف TEMP إلى اسم الملف الجديد. أنا فقط أستخدم الملف العادي :: TEMP و "إعادة تسمية" للقيام بذلك، في بيرل. كنت أتساءل - هل هناك بعض الطرق الأخرى الموصى بها / الأفضل للقيام بذلك؟ ويفضل أن يكون ذلك لا يتطلب وحدة مفكرة CPAN، لأن هذا هو المكان الوحيد في نظامي الذي أحتاجه للقيام بذلك، ولا أريد اعتماد جديد تماما لهذا الغرض.

أوه، وكل هذا يجب أن يعمل على Windows، Linux، BSD، OS X، Solaris، ومعظم المنصات الشائعة الأخرى.

هنا هو الرمز المعني, ، لأولئك المهتمين.

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

المحلول

يبدو أن طريقتك جيدة. إنها سريعة، إنها ذرية، ويستخدم الوحدات الأساسية فقط، وملف :: TEMP طريقة آمنة للتعامل مع الملفات المؤقتة. أكثر ما تحتاج؟

نصائح أخرى

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

إعادة تسمية كافية. ومع ذلك:

هل ملفك المؤقت في خطر لظروف السباق؟ يجب اختيار عشوائي اسم الملف حتى لا يمكن لأحد أن يسبب مشاكل عن طريق إدخال ملف خاص بهم. استخدم واجهة Mkstemp () إن أمكن.

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