septag
DMON هي مكتبة C TIME C التي تراقب التغييرات في الدليل. يوفر حلًا موحدًا لواجهة برمجة تطبيقات النظام المتعددة الموجودة لكل نظام تشغيل. يمكنها أيضا مراقبة الدلائل بشكل متكرر.
ReadDirectoryChangesW الخلفية. تم اختباره مع Windows10 SDK + Visual Studio 2019inotify الواجهة الخلفية. تم اختباره مع GCC-7.4/Clang-6 ، Ubuntu 18.04 LTSFSEvents الخلفية. تم اختباره مع MacOS-10.14 Clang 10عليك فقط تضمين الملف واستخدام وظائفه. كما أنه متوافق مع رمز C ++. يتم أيضًا تحويل الانزلاقات الخلفية في مسارات Windows إلى "/" من أجل قابلية النقل.
#define DMON_IMPL
#include "dmon.h"
static void watch_callback ( dmon_watch_id watch_id , dmon_action action , const char * rootdir ,
const char * filepath , const char * oldfilepath , void * user )
{
// receive change events. type of event is stored in 'action' variable
}
int main ()
{
dmon_init ();
dmon_watch ( "/path/to/directory" , watch_callback , DMON_WATCHFLAGS_RECURSIVE , NULL );
// wait ...
dmon_deinit ();
return 0 ;
}لمزيد من المعلومات وكيفية تخصيص الوظائف ، راجع dmon.h
للبناء على Linux ، رابط مع pthread : gcc test.c -lpthread -o test
للبناء على MacOS ، ارتبط مع CoreServices و CoreFoundation : clang test.c -framework CoreFoundation -framework CoreServices -lpthread -o test
هناك هذا الملف الآخر dmon_extra.h يمكنك تضمينه اختياريا بعد dmon.h لخلفية Linux. هناك نوعان من واجهات برمجة التطبيقات التي تم تقديمها في هذا الرأس ، dmon_watch_add و dmon_watch_rm حيث يمكنك إضافة/إزالة المخرجين الفرعيين إلى الدليل الذي تمت مراقبته حاليًا. يمكن أن يكون هذا مفيدًا في الحالات التي توجد فيها مجموعة كبيرة من التغييرات التي تحدث على الواجهة الخلفية Linux ولن تحصل على جميع الأحداث ، بسبب بعض عيوب inotify الخلفية. لذلك ، من خلال تعطيل DMON_WATCHFLAGS_RECURSIVE واستخدام هذه الوظائف للتعامل يدويًا إلى عودة الدليل ، يمكنك حل هذه المشكلات.
Copyright 2019 Sepehr Taghdisian. All rights reserved.
https://github.com/septag/dmon
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.