@Septag
Dmon ist eine winzige C -Bibliothek, die Änderungen in einem Verzeichnis überwacht. Es bietet eine einheitliche Lösung für mehrere System -APIs, die für jedes Betriebssystem vorhanden sind. Es kann auch Verzeichnisse rekursiv überwachen.
ReadDirectoryChangesW Backend. Getestet mit Windows10 SDK + Visual Studio 2019inotify . Getestet mit GCC-7.4/Clang-6, Ubuntu 18.04 LTsFSEvents Backend. Getestet mit macOS-10.14 clang 10Sie müssen nur die Datei einfügen und ihre Funktionen verwenden. Es ist auch mit C ++ - Code kompatibel. Backslashes in Windows -Pfaden werden ebenfalls zur Portabilität in '/' konvertiert.
#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 ;
}Weitere Informationen und die Anpassung der Funktionalität finden Sie unter dmon.h
Um auf Linux aufzubauen, verknüpfen Sie mit pthread : gcc test.c -lpthread -o test
Um auf macOS zu bauen, verknüpfen Sie mit CoreServices und CoreFoundation : clang test.c -framework CoreFoundation -framework CoreServices -lpthread -o test
Es gibt diese andere Datei dmon_extra.h , die Sie optional nach dmon.h für Linux -Backend einfügen können. In diesem Header werden zwei APIs eingeführt, dmon_watch_add und dmon_watch_rm , in denen Sie dem derzeit angesehenen Verzeichnis Unterdirektorien hinzufügen/entfernen können. Dies kann in Fällen nützlich sein, in denen bei Linux -Backend große Änderungen vorliegen und Sie nicht alle Ereignisse erhalten, da einige Nachteile des inotify -Backends. Durch Deaktivieren von DMON_WATCHFLAGS_RECURSIVE und Verwendung dieser Funktionen, um die Verzeichnisrekursion manuell zu verarbeiten, können Sie diese Probleme umgehalten.
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.