Jest jaki sprytny standard jak monitorować czy plik został zmodyfikowany na platformie Linux/Windows,
czy po prostu samemu w wątku trzeba monitorować zmiany ?
Windows ma do tego API, można się zapisać na event
Użyłem tego 1x czy 2x
Jak odnowię pamieć, przeredaguję.
To chyba to
https://learn.microsoft.com/en-us/windows/win32/fileio/obtaining-directory-change-notifications
Działało również w stosunku do danych na dysku SMB
Multiplatform, nigdy nie używałem:
https://doc.qt.io/qt-5/qfilesystemwatcher.html
Na linuxie korzystam z klas funkcji inotify
.
malencki napisał(a):
Multiplatform, nigdy nie używałem:
https://doc.qt.io/qt-5/qfilesystemwatcher.htmlNa linuxie korzystam z klas funkcji
inotify
.
Wydaje się, że jeśli multiplatfdorowe nie będzie korzystać z natywnego a zapie...ć w pętli brutal force, byłoby to kosztowne
AnyKtokolwiek napisał(a):
malencki napisał(a):
Multiplatform, nigdy nie używałem:
https://doc.qt.io/qt-5/qfilesystemwatcher.htmlNa linuxie korzystam z klas funkcji
inotify
.Wydaje się, że jeśli multiplatfdorowe nie będzie korzystać z natywnego a zapie...ć w pętli brutal force, byłoby to kosztowne
Nie.
https://github.com/qt/qtbase/blob/dev/src/corelib/io/qfilesystemwatcher_inotify.cpp
Są jeszcze na githubie inne FileWatchery, więc @Marius.Maximus możesz czegoś sensownego poszukać.
Co do multiplatform - sam używam od jakiegoś czasu Seafile - https://www.seafile.com/en/home/. Jest to bardzo fajna chmura do postawienia na swoim serwerze, klient jest dość lekki, w odróżnieniu od innych chmur - nie przerzuca całych plików, ale jedynie dokonane zmiany. Do tego można sobie podłączyć do synchronizacji wiele lokalizacji/katalogów itp. Ja głównie używam linuksa i na nim to działa bez problemów.
A tak do brzegu ;) O ile mnie pamięć nie myli, to:
- na linuksie korzysta (jak wspomnieli przedmówcy) z mechanizmu
inotify
- na windowsie
ReadDirectoryChangesW
- https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-readdirectorychangesw - na Apple -
FSEvents
Natomiast zła wiadomość - nie kojarzę (oczywiście - może takie coś jest i ktoś podlinkuje) jakiegoś gloalnego mechanizmu/wrappera/frameworka, który by działał ponad systemem i miał w sobie ukryte szczegóły implementacyjne, a programiście oferował dostęp do jakiegoś API, które informuje o zmianach - niezależnie, na jakim OS to odpalisz. Także, obawiam się, że dla każdego systemy, który Cie interesuje, musiałbyś sobie napisać obsługę śledzenia takich zmian niezależnie.