File Events
FileWatching.poll_fd — Functionpoll_fd(fd, timeout_s::Gerçek=-1; okunabilir=false, yazılabilir=false)Bir dosya tanımlayıcısını fd okuma veya yazma uygunluğundaki değişiklikler için izleyin ve timeout_s saniye cinsinden verilen bir zaman aşımı ile.
Anahtar kelime argümanları, hangi okuma ve/veya yazma durumunun izleneceğini belirler; bunlardan en az biri true olarak ayarlanmalıdır.
Dönen değer, anketin sonucunu veren okunabilir, yazılabilir ve zaman aşımına uğramış boolean alanlarına sahip bir nesnedir.
FileWatching.poll_file — Functionpoll_file(path::AbstractString, interval_s::Real=5.007, timeout_s::Real=-1) -> (previous::StatStruct, current)Bir dosyayı, bir değişiklik meydana gelene kadar veya timeout_s saniye geçene kadar her interval_s saniyede bir kontrol ederek izleyin. interval_s uzun bir süre olmalıdır; varsayılan değer 5.007 saniyedir.
Bir değişiklik tespit edildiğinde, durum nesnelerinin bir çiftini (previous, current) döndürür. previous durumu her zaman bir StatStruct'tur, ancak tüm alanları sıfırlanmış olabilir (bu, dosyanın daha önce mevcut olmadığını veya daha önce erişilebilir olmadığını gösterir).
current durum nesnesi bir StatStruct, bir EOFError (zaman aşımının dolduğunu gösterir) veya stat işleminin başarısız olması durumunda başka bir Exception alt türü olabilir (örneğin, yol mevcut değilse).
Bir dosyanın ne zaman değiştirildiğini belirlemek için current isa StatStruct && mtime(prev) != mtime(current) karşılaştırmasını kullanarak değişiklik bildirimini tespit edin. Ancak, bu işlem için watch_file kullanılması tercih edilir, çünkü daha güvenilir ve etkilidir, ancak bazı durumlarda mevcut olmayabilir.
FileWatching.watch_file — Functionwatch_file(path::AbstractString, timeout_s::Real=-1)path dosyasını veya dizinini değişiklikler için izleyin, bir değişiklik meydana gelene kadar veya timeout_s saniyesi dolana kadar. Bu fonksiyon dosya sistemini sorgulamaz ve bunun yerine işletim sisteminden (örneğin, Linux'ta inotify aracılığıyla) bildirim almak için platforma özgü işlevsellik kullanır. Aşağıda bağlantılı NodeJS belgelerine detaylar için bakın.
Dönen değer, dosyayı izleme sonucunu veren renamed, changed ve timedout boolean alanlarına sahip bir nesnedir.
Bu fonksiyonun davranışı platformlar arasında biraz farklılık gösterir. Daha ayrıntılı bilgi için https://nodejs.org/api/fs.html#fs_caveats adresine bakın.
FileWatching.watch_folder — Functionwatch_folder(path::AbstractString, timeout_s::Real=-1)Bir dosya veya dizin path'te değişiklikleri izler ve bir değişiklik meydana gelene kadar veya timeout_s saniye geçene kadar devam eder. Bu fonksiyon dosya sistemini sorgulamaz ve bunun yerine işletim sisteminden (örneğin, Linux'ta inotify aracılığıyla) bildirim almak için platforma özgü işlevsellik kullanır. Ayrıntılar için aşağıda bağlantısı verilen NodeJS belgelerine bakın.
Bu, unwatch_folder aynı path üzerinde çağrılana kadar arka planda path için değişiklikleri izlemeye devam edecektir.
Dönen değer, ilk alanı değiştirilen dosyanın adı (varsa) ve ikinci alanı olayları belirten renamed, changed ve timedout boolean alanlarına sahip bir nesne olan bir çift olacaktır.
Bu fonksiyonun davranışı platformlar arasında biraz farklılık gösterir. Daha ayrıntılı bilgi için https://nodejs.org/api/fs.html#fs_caveats adresine bakın.
FileWatching.unwatch_folder — Functionunwatch_folder(path::AbstractString)path için değişikliklerin arka planda izlenmesini durdurur. Aynı path üzerinde watch_folder'ın dönmesini bekleyen başka bir görev varken bunu yapmanız önerilmez, çünkü sonuç öngörülemez olabilir.
Pidfile
Basit bir yardımcı araç, danışmanlık pid dosyaları (kilit dosyaları) oluşturmak için.
Primary Functions
FileWatching.Pidfile.mkpidlock — Functionmkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
mkpidlock(at::String, proc::Process; kwopts...)Mevcut işlem veya pid veya proc ile tanımlanan işlem için "at" yolunda bir pidfile kilidi oluşturur. Kilit açıldığında çalıştırılacak bir işlev alabilir, bu da do bloklarında kullanım için geçerlidir; ardından kilit otomatik olarak kapatılacaktır. Kilit başarısız olursa ve wait false ise, bir hata fırlatılır.
Kilit, ya close, bir finalizer veya proc çıkış yaptıktan kısa bir süre sonra serbest bırakılacaktır. Dönüş değerinin programınızın kritik bölümünün sonuna kadar canlı olduğundan emin olun, böylece finalizer onu erken geri almaz.
İsteğe bağlı anahtar argümanlar:
mode: dosya erişim modu (işlem umask'ı tarafından değiştirilir). Varsayılan olarak dünya tarafından okunabilir.poll_interval: Denemeler arasındaki maksimum süreyi belirtin (eğerwatch_fileçalışmazsa)stale_age: Mevcut bir pidfile'ı (kilidi göz ardı ederek) bu kadar saniye daha eskiyse silin. Dosya, dosyadaki pid geçerli görünüyor gibi görünüyorsa, bu süreden 5 kat daha uzun süre silinmeyecektir. Veyarefresh0 olarak geçersiz kılınırsa kilit yenilemesi devre dışı bırakılırsa 25 kat daha uzun süre. Varsayılan olarak bu devre dışı bırakılmıştır (stale_age= 0), ancak tipik olarak önerilen bir değer, tahmini normal tamamlama süresinin yaklaşık 3-5 katı olacaktır.refresh: Kilidin bayatlamasını önlemek için geçen her zaman aralığında mtime'ı güncelleyerek. Varsayılan olarak, bustale_age/2olarak ayarlanmıştır, bu da önerilen değerdir.wait: Eğer true ise, kilidi alana kadar engelle, false ise, kilit başarısız olursa hata fırlat.
FileWatching.Pidfile.trymkpidlock — Functiontrymkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
trymkpidlock(at::String, proc::Process; kwopts...)mkpidlock gibi, ancak dosya zaten kilitlenmişse beklemek yerine false döner.
Bu fonksiyon en az Julia 1.10 gerektirir.
Base.close — Methodclose(lock::LockMonitor)Bir pidfile kilidini serbest bırakır.
Helper Functions
FileWatching.Pidfile.open_exclusive — Functionopen_exclusive(path::String; mode, poll_interval, wait, stale_age, refresh) :: FileOkuma yazma tavsiye edici özel erişim için yeni bir dosya oluşturur. Eğer wait false ise, kilit dosyaları mevcutsa hata verir, aksi takdirde kilidi alana kadar engeller.
Anahtar argümanların açıklaması için mkpidlock kısmına bakın.
FileWatching.Pidfile.tryopen_exclusive — Functiontryopen_exclusive(path::String, mode::Integer = 0o444) :: Union{Void, File}Okuma okuma yazma tavsiye edici özel erişim için yeni bir dosya oluşturmaya çalışın, eğer zaten mevcutsa hiçbir şey döndürmeyin.
FileWatching.Pidfile.write_pidfile — Functionwrite_pidfile(io, pid)Açık bir IO tanımlayıcısına pidfile formatımızı yazın.
FileWatching.Pidfile.parse_pidfile — Functionparse_pidfile(file::Union{IO, String}) => (pid, hostname, age)Pid dosyamızın formatını ayrıştırmayı deneyin, başarısız olan her okuma için sırasıyla (0, "", 0.0) ile bir öğeyi değiştirdik.
FileWatching.Pidfile.stale_pidfile — Functionstale_pidfile(path::String, stale_age::Real, refresh::Real) :: Boolpidfile'ın eski olup olmadığını belirlemek için open_exclusive için yardımcı fonksiyon.
FileWatching.Pidfile.isvalidpid — Functionisvalidpid(hostname::String, pid::Cuint) :: Boolpid'nin geçerli bir işlem kimliği olup olmadığını ihtiyatlı bir şekilde tahmin etmeye çalışır.
Base.Filesystem.touch — MethodBase.touch(::Pidfile.LockMonitor)Kilidi güncel tutmak için mtime değerini günceller.
Ayrıca mkpidlock yapıcısındaki refresh anahtar kelimesine de bakın.