File Events

FileWatching.poll_fdFunction
poll_fd(fd, timeout_s::Real=-1; readable=false, writable=false)

파일 디스크립터 fd의 읽기 또는 쓰기 가능성의 변화를 모니터링하며, timeout_s 초로 주어진 타임아웃을 설정합니다.

키워드 인자는 읽기 및/또는 쓰기 상태 중 어떤 것을 모니터링할지를 결정하며, 이 중 적어도 하나는 true로 설정되어야 합니다.

반환되는 값은 불리언 필드 readable, writable, 및 timedout을 가진 객체로, 폴링의 결과를 제공합니다.

source
FileWatching.poll_fileFunction
poll_file(path::AbstractString, interval_s::Real=5.007, timeout_s::Real=-1) -> (previous::StatStruct, current)

파일의 변경 사항을 모니터링하기 위해 interval_s 초마다 폴링하여 변경 사항이 발생하거나 timeout_s 초가 경과할 때까지 대기합니다. interval_s는 긴 기간이어야 하며, 기본값은 5.007초입니다.

변경 사항이 감지되면 상태 객체 쌍 (previous, current)를 반환합니다. previous 상태는 항상 StatStruct이지만, 모든 필드가 0으로 설정되어 있을 수 있습니다(파일이 이전에 존재하지 않았거나 접근할 수 없었음을 나타냄).

current 상태 객체는 StatStruct, EOFError(타임아웃이 경과했음을 나타냄) 또는 다른 Exception 하위 유형일 수 있습니다(예: stat 작업이 실패한 경우 - 경로가 존재하지 않는 경우 등).

파일이 수정된 시점을 확인하려면 current isa StatStruct && mtime(prev) != mtime(current)를 비교하여 변경 사항 알림을 감지합니다. 그러나 이 작업에는 watch_file를 사용하는 것이 더 신뢰할 수 있고 효율적이므로 선호됩니다. 다만, 일부 상황에서는 사용할 수 없을 수 있습니다.

source
FileWatching.watch_fileFunction
watch_file(path::AbstractString, timeout_s::Real=-1)

파일 또는 디렉토리 path의 변경 사항을 감시하며, 변경 사항이 발생하거나 timeout_s 초가 경과할 때까지 대기합니다. 이 함수는 파일 시스템을 폴링하지 않고, 대신 운영 체제에서 알림을 받기 위해 플랫폼별 기능을 사용합니다(예: Linux의 inotify를 통해). 자세한 내용은 아래에 링크된 NodeJS 문서를 참조하십시오.

반환된 값은 파일 감시 결과를 제공하는 불리언 필드 renamed, changed, timedout을 가진 객체입니다.

이 함수의 동작은 플랫폼에 따라 약간 다를 수 있습니다. 더 자세한 정보는 https://nodejs.org/api/fs.html#fs_caveats에서 확인하십시오.

source
FileWatching.watch_folderFunction
watch_folder(path::AbstractString, timeout_s::Real=-1)

파일 또는 디렉토리 path의 변경 사항을 감시하며, 변경 사항이 발생하거나 timeout_s 초가 경과할 때까지 대기합니다. 이 함수는 파일 시스템을 폴링하지 않고, 대신 운영 체제에서 알림을 받기 위해 플랫폼별 기능을 사용합니다(예: Linux의 inotify를 통해). 자세한 내용은 아래에 링크된 NodeJS 문서를 참조하십시오.

이 함수는 unwatch_folder가 동일한 path에서 호출될 때까지 백그라운드에서 path의 변경 사항을 계속 추적합니다.

반환 값은 변경된 파일의 이름(가능한 경우)과 이벤트를 제공하는 불리언 필드 renamed, changed, timedout이 포함된 객체로 구성된 쌍입니다.

이 함수의 동작은 플랫폼에 따라 약간 다를 수 있습니다. 더 자세한 정보는 https://nodejs.org/api/fs.html#fs_caveats에서 확인하십시오.

source
FileWatching.unwatch_folderFunction
unwatch_folder(path::AbstractString)

path에 대한 변경 사항의 백그라운드 추적을 중지합니다. 동일한 경로에서 watch_folder가 반환되기를 기다리는 다른 작업이 있는 동안 이 작업을 수행하는 것은 권장되지 않으며, 결과가 예측할 수 없을 수 있습니다.

source

Pidfile

조언 pid 파일(잠금 파일)을 생성하기 위한 간단한 유틸리티 도구입니다.

Primary Functions

FileWatching.Pidfile.mkpidlockFunction
mkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
mkpidlock(at::String, proc::Process; kwopts...)

현재 프로세스 또는 pid 또는 proc로 식별된 프로세스에 대해 경로 "at"에 대한 pidfile 잠금을 생성합니다. 잠금이 설정된 후 do 블록에서 실행할 함수를 사용할 수 있으며, 이후 잠금은 자동으로 닫힙니다. 잠금에 실패하고 wait가 false인 경우 오류가 발생합니다.

잠금은 close, finalizer 또는 proc가 종료된 직후에 해제됩니다. 반환 값이 프로그램의 중요한 섹션 끝까지 살아 있도록 하여 finalizer가 이를 조기에 회수하지 않도록 하십시오.

선택적 키워드 인수:

  • mode: 파일 접근 모드(프로세스 umask에 의해 수정됨). 기본값은 모든 사용자에게 읽기 가능.
  • poll_interval: 시도 간 최대 시간을 지정합니다(만약 watch_file이 작동하지 않는 경우).
  • stale_age: 기존 pidfile을 삭제합니다(잠금을 무시하고) 이 많은 초보다 오래된 경우, mtime을 기준으로 합니다. 파일이 유효할 수 있는 pid가 나타나면 이보다 5배 더 긴 시간 동안 삭제되지 않습니다. 또는 refresh가 0으로 재정의되어 잠금 새로 고침이 비활성화된 경우 25배 더 긴 시간 동안 삭제되지 않습니다. 기본적으로 이는 비활성화되어 있습니다(stale_age = 0), 그러나 일반적으로 권장되는 값은 예상 정상 완료 시간의 약 3-5배입니다.
  • refresh: 시간이 경과할 때마다 mtime을 업데이트하여 잠금이 오래되지 않도록 유지합니다. 기본적으로 이는 stale_age/2로 설정되어 있으며, 이는 권장 값입니다.
  • wait: true인 경우 잠금을 얻을 때까지 차단하고, false인 경우 잠금 실패 시 오류를 발생시킵니다.
source
FileWatching.Pidfile.trymkpidlockFunction
trymkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
trymkpidlock(at::String, proc::Process; kwopts...)

mkpidlock과 유사하지만, 파일이 이미 잠겨 있는 경우 대기하는 대신 false를 반환합니다.

Julia 1.10

이 함수는 최소한 Julia 1.10이 필요합니다.

source
Base.closeMethod
close(lock::LockMonitor)

pidfile 잠금을 해제합니다.

source

Helper Functions

FileWatching.Pidfile.open_exclusiveFunction
open_exclusive(path::String; mode, poll_interval, wait, stale_age, refresh) :: File

읽기-쓰기 자문 전용 액세스를 위한 새 파일을 만듭니다. waitfalse이면 잠금 파일이 존재할 경우 오류를 발생시키고, 그렇지 않으면 잠금을 얻을 때까지 차단합니다.

키워드 인수에 대한 설명은 mkpidlock를 참조하십시오.

source
FileWatching.Pidfile.tryopen_exclusiveFunction
tryopen_exclusive(path::String, mode::Integer = 0o444) :: Union{Void, File}

읽기-쓰기 자문 전용 액세스를 위해 새 파일을 생성하려고 시도하며, 이미 존재하는 경우 아무것도 반환하지 않습니다.

source
FileWatching.Pidfile.parse_pidfileFunction
parse_pidfile(file::Union{IO, String}) => (pid, hostname, age)

우리의 pidfile 형식을 파싱하려고 시도하며, 실패한 읽기에 대해 각각 (0, "", 0.0)으로 요소를 대체합니다.

source
FileWatching.Pidfile.stale_pidfileFunction
stale_pidfile(path::String, stale_age::Real, refresh::Real) :: Bool

open_exclusive의 도움 함수로 pidfile이 오래된 것인지 결정합니다.

source
FileWatching.Pidfile.isvalidpidFunction
isvalidpid(hostname::String, pid::Cuint) :: Bool

pid가 유효한 프로세스 ID인지 보수적으로 추정하려고 시도합니다.

source
Base.Filesystem.touchMethod
Base.touch(::Pidfile.LockMonitor)

잠금의 mtime을 업데이트하여 여전히 최신임을 나타냅니다.

mkpidlock 생성자의 refresh 키워드도 참조하십시오.

source