File Events
FileWatching.poll_fd — Functionpoll_fd(fd, timeout_s::Real=-1; readable=false, writable=false)Surveille un descripteur de fichier fd pour des changements dans la disponibilité de lecture ou d'écriture, avec un délai donné par timeout_s secondes.
Les arguments de mot-clé déterminent quel statut de lecture et/ou d'écriture doit être surveillé ; au moins l'un d'eux doit être défini sur true.
La valeur retournée est un objet avec des champs booléens readable, writable et timedout, donnant le résultat du sondage.
FileWatching.poll_file — Functionpoll_file(path::AbstractString, interval_s::Real=5.007, timeout_s::Real=-1) -> (previous::StatStruct, current)Surveillez un fichier pour détecter des changements en interrogeant toutes les interval_s secondes jusqu'à ce qu'un changement se produise ou que timeout_s secondes se soient écoulées. L'interval_s doit être une longue période ; la valeur par défaut est de 5.007 secondes.
Renvoie une paire d'objets d'état (previous, current) lorsqu'un changement est détecté. L'état previous est toujours un StatStruct, mais il peut avoir tous les champs à zéro (indiquant que le fichier n'existait pas auparavant ou n'était pas accessible auparavant).
L'objet d'état current peut être un StatStruct, une EOFError (indiquant que le délai a expiré), ou un autre sous-type d'Exception (si l'opération stat a échoué - par exemple, si le chemin n'existe pas).
Pour déterminer quand un fichier a été modifié, comparez current isa StatStruct && mtime(prev) != mtime(current) pour détecter la notification de changements. Cependant, l'utilisation de watch_file pour cette opération est préférable, car elle est plus fiable et efficace, bien que dans certaines situations, elle puisse ne pas être disponible.
FileWatching.watch_file — Functionwatch_file(path::AbstractString, timeout_s::Real=-1)Surveillez le fichier ou le répertoire path pour des changements jusqu'à ce qu'un changement se produise ou que timeout_s secondes se soient écoulées. Cette fonction ne scrute pas le système de fichiers et utilise plutôt des fonctionnalités spécifiques à la plateforme pour recevoir des notifications du système d'exploitation (par exemple, via inotify sur Linux). Consultez la documentation NodeJS liée ci-dessous pour plus de détails.
La valeur retournée est un objet avec des champs booléens renamed, changed et timedout, donnant le résultat de la surveillance du fichier.
Ce comportement de cette fonction varie légèrement selon les plateformes. Voir https://nodejs.org/api/fs.html#fs_caveats pour des informations plus détaillées.
FileWatching.watch_folder — Functionwatch_folder(path::AbstractString, timeout_s::Real=-1)Surveille un fichier ou un répertoire path pour des changements jusqu'à ce qu'un changement se soit produit ou que timeout_s secondes se soient écoulées. Cette fonction ne scrute pas le système de fichiers et utilise plutôt des fonctionnalités spécifiques à la plateforme pour recevoir des notifications du système d'exploitation (par exemple, via inotify sur Linux). Voir la documentation NodeJS liée ci-dessous pour plus de détails.
Cela continuera à suivre les changements pour path en arrière-plan jusqu'à ce que unwatch_folder soit appelé sur le même path.
La valeur retournée est une paire où le premier champ est le nom du fichier modifié (si disponible) et le deuxième champ est un objet avec des champs booléens renamed, changed et timedout, indiquant l'événement.
Ce comportement de cette fonction varie légèrement selon les plateformes. Voir https://nodejs.org/api/fs.html#fs_caveats pour des informations plus détaillées.
FileWatching.unwatch_folder — Functionunwatch_folder(path::AbstractString)Arrêtez le suivi en arrière-plan des modifications pour path. Il n'est pas recommandé de faire cela pendant qu'une autre tâche attend que watch_folder retourne sur le même chemin, car le résultat peut être imprévisible.
Pidfile
Un outil utilitaire simple pour créer des fichiers pid d'avis (fichiers de verrouillage).
Primary Functions
FileWatching.Pidfile.mkpidlock — Functionmkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
mkpidlock(at::String, proc::Process; kwopts...)Créez un verrou de fichier pid pour le chemin "at" pour le processus actuel ou le processus identifié par pid ou proc. Peut prendre une fonction à exécuter une fois verrouillé, pour une utilisation dans des blocs do, après quoi le verrou sera automatiquement fermé. Si le verrou échoue et que wait est faux, une erreur est levée.
Le verrou sera libéré soit par close, un finalizer, ou peu après la sortie de proc. Assurez-vous que la valeur de retour reste vivante jusqu'à la fin de la section critique de votre programme, afin que le finalizer ne la récupère pas trop tôt.
Arguments optionnels :
mode: mode d'accès au fichier (modifié par le umask du processus). Par défaut, il est lisible par tous.poll_interval: Spécifiez le temps maximum entre les tentatives (siwatch_filene fonctionne pas)stale_age: Supprimez un fichier pid existant (en ignorant le verrou) s'il est plus ancien que ce nombre de secondes, basé sur son mtime. Le fichier ne sera pas supprimé tant que 5 fois plus longtemps que cela si le pid dans le fichier semble valide. Ou 25 fois plus longtemps sirefreshest remplacé par 0 pour désactiver le rafraîchissement du verrou. Par défaut, cela est désactivé (stale_age= 0), mais une valeur typiquement recommandée serait d'environ 3-5 fois un temps d'achèvement normal estimé.refresh: Empêche un verrou de devenir obsolète en mettant à jour le mtime à chaque intervalle de temps qui passe. Par défaut, cela est réglé surstale_age/2, qui est la valeur recommandée.wait: Si vrai, bloque jusqu'à ce que nous obtenions le verrou, si faux, lève une erreur si le verrou échoue.
FileWatching.Pidfile.trymkpidlock — Functiontrymkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
trymkpidlock(at::String, proc::Process; kwopts...)Comme mkpidlock sauf qu'il retourne false au lieu d'attendre si le fichier est déjà verrouillé.
Cette fonction nécessite au moins Julia 1.10.
Base.close — Methodclose(lock::LockMonitor)Libérez un verrou de fichier pid.
Helper Functions
FileWatching.Pidfile.open_exclusive — Functionopen_exclusive(path::String; mode, poll_interval, wait, stale_age, refresh) :: FileCréez un nouveau fichier pour un accès exclusif en lecture-écriture. Si wait est false, alors une erreur se produira si les fichiers de verrouillage existent, sinon, bloquez jusqu'à ce que nous obtenions le verrou.
Pour une description des arguments de mot-clé, voir mkpidlock.
FileWatching.Pidfile.tryopen_exclusive — Functiontryopen_exclusive(path::String, mode::Integer = 0o444) :: Union{Void, File}Essayez de créer un nouveau fichier pour un accès exclusif en lecture-écriture, ne renvoyez rien s'il existe déjà.
FileWatching.Pidfile.write_pidfile — Functionwrite_pidfile(io, pid)Écrire notre format de fichier pid dans un descripteur IO ouvert.
FileWatching.Pidfile.parse_pidfile — Functionparse_pidfile(file::Union{IO, String}) => (pid, hostname, age)Tentez de parser notre format de fichier pid, remplaçant un élément par (0, "", 0.0), respectivement, pour toute lecture qui a échoué.
FileWatching.Pidfile.stale_pidfile — Functionstale_pidfile(path::String, stale_age::Real, refresh::Real) :: BoolFonction d'assistance pour open_exclusive pour décider si un fichier pid est obsolète.
FileWatching.Pidfile.isvalidpid — Functionisvalidpid(hostname::String, pid::Cuint) :: BoolTentative d'estimer de manière conservatrice si pid est un identifiant de processus valide.
Base.Filesystem.touch — MethodBase.touch(::Pidfile.LockMonitor)Met à jour le mtime sur le verrou, pour indiquer qu'il est toujours frais.
Voir aussi le mot-clé refresh dans le constructeur mkpidlock.