كيفية إعلامك بتغيير الملف/الدليل في C/C++، ومن الأفضل استخدام POSIX

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

  •  09-06-2019
  •  | 
  •  

سؤال

الموضوع يقول كل شيء - عادة ما تكون الطريقة السهلة والمتعددة المنصات هي إجراء الاستطلاع بذكاء.لكن كل نظام تشغيل لديه بعض الوسائل للإخطار دون الاقتراع.هل من الممكن بطريقة عبر منصة معقولة؟(أنا أهتم فقط بنظامي التشغيل Windows وLinux، ولكني أستخدم نظام التشغيل Mac، لذا أعتقد أن posix قد يساعد؟)

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

المحلول

يمكن لمستخدمي Linux استخدامها com.inotify

Inotify هو نظام فرعي Linux kernel يوفر إشعارًا لحدث نظام الملفات.

بعض الأشياء الجيدة لزملاء Windows:

نصائح أخرى

مكتبة كيو تي لديها QFileSystemWatcher فئة توفر إشعارات عبر الأنظمة الأساسية عند تغيير الملف.حتى إذا كنت لا تستخدم Qt، نظرًا لتوفر المصدر، يمكنك إلقاء نظرة عليه كنموذج لتطبيقك الخاص.لدى Qt تطبيقات منفصلة لأنظمة التشغيل Windows وLinux وMac.

لا أعتقد أن POSIX نفسها لديها مرافق لذلك.الأقرب إلى النظام الأساسي الذي رأيته هو مألوف, ، والذي يبدو أنه يعمل مع Linux وBSD وIrix، لكنني لا أعرف مدى سهولة نقله إلى Windows وMacOS.

لقد قمت بالفعل ببناء هذا النظام من قبل لاستخدامه في قاعدة تعليمات برمجية C++ تجارية - طالما أنك لا تحتاج إلى كل شيء غريب تحت الشمس، فإن نظامي Windows وPOSIX لديهما الكثير من التداخل الذي يمكنك تجريده.

بوسيكس:استخدم inotify- إنه نظام كامل تم تصميمه حرفيًا لهذه المهمة
شبابيك:استخدم "تغيير الأحداث".يجب عليك إنشاء المزيد من الغراء وإعداد التقارير بنفسك (جميع واجهات برمجة التطبيقات التي تحتاجها متوفرة، لكن لا يوجد ما يوفره لك inotify الذي يوفر توقفًا واحدًا للتسوق).

الأشياء الشائعة التي يمكنك اكتشافها في "سلسلة الإشعارات" لإعادة توجيه الأحداث هي:
1) بشكل أساسي أي عملية غازية تدعم نظام الملفات::، مع استثناء (محتمل) لتعديل الأذونات.هذه أشياء مثل نقل المجلدات والملفات وإنشائها وحذفها ونسخها.
2) القراءة والكتابة على الملفات (خاصة.يكتب).انتبه إلى أنه إذا كنت تستخدم الإدخال/الإخراج غير المتزامن، فقد تظهر الإشعارات خارج الترتيب.
3) عند ظهور وحدة تخزين جديدة، مثل قيام شخص ما بتوصيل محرك أقراص محمول.

يمنحك inotify بشكل خاص مستوى مجنونًا من التحكم الدقيق، على عكس Windows.باستخدام inotify، يمكنك مراقبة كل ما يفعله نظام الملفات حرفيًا في الوقت الفعلي تقريبًا إذا كنت تريد ذلك حقًا.أعلم أن رقم 3 ممكن مع كليهما دون الاقتراع، لكن انتبه إلى أنه قد يكون من الصعب حقًا تشغيله بشكل صحيح - على أي من النظامين.

أعتقد أن OS X لديه الآن خطافات/رد اتصال مناسبة لأنها كانت ضرورية لفهرسة Spotlight.

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

ليبفينت أو ليبيف يبدو أن ما تريد، على الرغم من أنني لم تستخدمها.

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