هل من الممكن الحصول على اسم الملف من معرف FSEvent؟

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

  •  12-12-2019
  •  | 
  •  

سؤال

لقد قمت بإنشاء مراقب نظام ملفات بسيط في C ++ باستخدام API أحداث نظام ملفات Mac كما هو موثق هنا: apple developer doc . سؤالي هو في العنوان. كيف يمكنني الحصول على مسار الشيء الذي تم تغييره؟ يعطيني صفيف EventPaths فقط مسار الدليل الأصل (أو تعيين منه) أنني أشاهد أساسا. ولكن ليس إدخال الدليل الأساسي الذي تم تعديله.

يمكنني الاستيلاء على معلومات مفيدة باستخدام رد الاتصال، I.E.:

giveacodicetagpre.

أنا أفكر في أنه ربما يمكن استخراج الاسم من إحدى هذه العناصر؟

تحرير:

على سبيل المثال، قد يجد المرء أنه يتم إنشاء ملف في هذه الحالة

kfseventstreameventflagitemcreated

يتم رفع

. ولكن كيف يجب أن أذهب للحصول على الاسم الفعلي لهذا البند؟ (وبالمثل بالنسبة للأحداث الأخرى، مثل عند حذف عنصر إلخ.).

تحرير 2:

بدأت أعتقد أنه لن يكون من الممكن أن تفعل ما أريد. من نظرة عامة على تقنية FS :

"النقطة المهمة التي تنقلها هي أن تحبيب الإخطارات على مستوى الدليل. يخبرك فقط أن شيئا ما في الدليل قد تغير، لكنه لا يخبرك بما تغير."

ويعرف أيضا باسم. bugger.

هتافات،

بن.

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

المحلول

في الواقع، هذا ممكن، ولكن فقط على 10.7+.تحقق من kfseventstreamcreateflagfilievents flag for fseventstreamcreate (مستندات هنا).

نصائح أخرى

لسوء الحظ كما اكتشفت، فمن الممكن؛راجع نظرة عامة على تقنية FS للحصول على تفسير / دافع.سيكون العمل حول العمل هو أخذ لقطة من الدليل، ثم كلما تم اكتشاف التغيير، خذ لقطة جديدة ويفعلها مع الأصل، للعثور على إدخالات الدليل المحدد (وأسمائها) التي تغيرت.

تحرير: من الممكن في>= 10.7 (انظر الإجابة المختارة)

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