FileWatching

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

ファイル記述子 fd の読み込み可能性および書き込み可能性の変更を監視します。タイムアウトは timeout_s 秒に設定されます。

二つのキーワード引数は読み込み可能性と書き込み可能性のどちらを監視するかを指定します。少なくとも一方は true である必要があり、両方を true にしても構いません。

返り値は readable, writable, timedout という真偽値フィールドを持ったオブジェクトであり、これがポーリングの結果を与えます。

FileWatching.poll_file ── 関数
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 ですが、全てのフィールドがゼロ埋めされている可能性があります (ファイルが前回存在しなかった、あるいはアクセスできなかったことを表します)。

状態オブジェクト currentStatStruct, EOFError, Exception の部分型のいずれかです。EOFError はタイムアウトしたことを表し、Exception の部分型は stat 操作が (パスが存在しないなどの理由で) 失敗したことを表します。

ファイルが改変されたかどうかを判定するには、current isa StatStruct && mtime(prev) != mtime(current) として変更の通知を検出してください。ただし、この操作を行うなら watch_file を使った方が信頼性が高く効率も良いので、こちらが推奨されます (watch_file が使えない状況も存在します)。

FileWatching.watch_file ── 関数
watch_file(path::AbstractString, timeout_s::Real=-1)

ファイルまたはディレクトリ path を監視し、変更が起きるか timeout_s 秒が経過したら値を返します。

返り値は changed, renamed, timedout という真偽値フィールドを持ったオブジェクトであり、これがファイル監視の結果を与えます。

この関数の振る舞いはプラットフォームごとに少し異なります。Node.js のドキュメントに詳しい情報があるので参照してください。

watch_folder(path::AbstractString, timeout_s::Real=-1)

ファイルまたはディレクトリ path を監視し、変更が起きるか timeout_s 秒が経過したら値を返します。

この関数は同じ pathunwatch_folder に対して呼ばれるまで path に対する変更の監視をバックグラウンドで続けます。

返り値はオブジェクトの組です。一つ目のオブジェクトは変更されたファイルの名前であり、二つ目のオブジェクトは changed, renamed, timedout という真偽値フィールドを持つイベントを表すオブジェクトです。

この関数の振る舞いはプラットフォームごとに少し異なります。Node.js のドキュメントに詳しい情報があるので参照してください。

unwatch_folder(path::AbstractString)

path に対するバックグラウンドで行う変更の追跡を停止します。他のタスクが同じパスに対して watch_folder で待機しているときにこの関数を呼ぶことは推奨されません。予期しない結果が生じる可能性があります。