سؤال

الهدف نظام التشغيل: WIN2003

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

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

المحلول

NTFS هو نظام الملفات مجلة. وبعد مجلة تعادل أساسا تسجيل الدخول في قاعدة بيانات. سوف تضمن الاتساق ونزاهة هياكل نظام الملفات مثل قاعدة البيانات من أجل جداولها. في حين File.Delete ليس لديه أي رمز معاملات على المستوى العالي، يحتفظ NTFS بسلامة المعاملات على مستوى نظام الملفات. قد لا يكون هذا صحيحا لبرامج تشغيل نظام الملفات الأخرى.

نصائح أخرى

السؤال القديم، ولكن إذا استطعت أن أضيف إلى إجابة @ مهدراد، من وجهة نظر مختلفة قليلا ...

على Windows، حذف ملف في كثير من الأحيان غير متزامن تماما، وليس حتى عملية واحدة. بهذا المعنى، بالتأكيد ليس عطري.

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

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

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