يمكن لنظام التشغيل أن يقول لي عندما يتم إنشاء ملف جديد؟

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

سؤال

وأريد أن أعرف عندما يتم إنشاء ملف جديد على دليل معين، بدلا من مسح الدليل من وقت لآخر.

وأنا أفهم أن هناك وسيلة لجعل نظام التشغيل اقول برنامجي الذي تم إنشاء ملف جديد. كيف يعمل؟

وكما ذكر، وهذا له أوجه التشابه مع كيفية يتم إخطار من ملف / تغيير الدليل C / C ++، من الناحية المثالية باستخدام POSIX

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

المحلول

والذي يعتمد على نظام التشغيل.

في ويندوز، فإن API قاعدة أن يكون تغيير الدليل إخطارات .

ومنذ كنت أذكر لينكس في العلامات، وهذا من شأنه أن يكون inotify API .

لإضافة إلى OS X الجواب، اعتبارا من 10.5، تريد FSEvents API .

نصائح أخرى

وتحت لينكس، تحقق من Inotify .

كيف تكون إخطار تغيير ملف / الدليل C / C ++، من الناحية المثالية باستخدام POSIX

وأو البحث عن inotify في ستاكوفيرفلوو ستحصل على الكثير من الأفكار

FAM يوفر واجهة مشاهدة ملف متناسقة عبر كل من Unixes. على لينكس، ويمكن استبدال الخفي الخلفية بواسطة الصبي المتشرد ، ولكن برنامج ربط مع FAM ستعمل مع الصبي المتشرد على ما يرام. (وراء الكواليس، قد يكون FAM باستخدام الاقتراع، والصبي المتشرد قد تستخدم inotify أو dnotify أو kqueue، ولكن يجب أن لا داعي للقلق بشأن تنفيذ).

وOS X.5 ديه FSEvents ، وهي مختلفة جدا من حيث أنه يراقب النظام برمته بدلا من الملفات المحددة والدلائل، ولكن أيضا تلبية الاحتياجات الخاصة بك.

في Windows راجع البحث (الأولى | التالي | انهيار) ChangeNotification أو ReadDirectoryChanges .

وFileSystemWatcher هو الجواب - وأنه يعمل بشكل متكرر

.

وهناك مثال هنا (البحث عن FileSystemWatcher)

ومع نظام التشغيل Mac OS X، هذه الوظيفة هي جزء من API الضوء.

<ع> استخدام صافي على ويندوز (لست متأكدا عن لينكس / مونو) يمكنك استخدام FileSsytemWatcher لمشاهدة لملفات جديدة ورفع الأحداث عند إنشائها.

ومن MSDN:

<اقتباس فقرة>   

استخدم FileSystemWatcher لمشاهدة ل   التغييرات في الدليل المحدد. أنت   يمكن مشاهدة لإجراء تغييرات في الملفات و   الدلائل الفرعية المحدد   الدليل. يمكنك إنشاء مكون   لمشاهدة الملفات على جهاز كمبيوتر، والمحلية   محرك أقراص الشبكة، أو جهاز كمبيوتر عن بعد.

MSDN الصفحة

ويوفر API ويندوز مرافق لرصد نظام الملفات - هناك مثال هنا <لأ href = "http://msdn.microsoft.com/en-us/library/aa365261٪28VS.85٪29.aspx" يختلط = "نوفولو noreferrer"> http://msdn.microsoft.com/en-us/library/aa365261٪28VS.85٪29.aspx

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