文件事件
# *`FileWatching。poll_文件`*-函数
poll_file(path::AbstractString, interval_s::Real=5.007, timeout_s::Real=-1) -> (previous::StatStruct, current)
通过轮询每个 interval_s 秒,直到发生更改或 timeout_s 几秒钟过去了。 该 interval_s 应该是一个很长的周期;默认值是5.007秒。
返回一对状态对象 (以前的,现在的) 时检测到变化。 该 上一次 状态总是一个 [医]状态结构,但它可能将所有字段归零(表示该文件以前不存在,或者以前无法访问)。
该 电流 状态对象可以是 [医]状态结构,安 EOFError,EOFError (表示超时经过),或其他一些 例外情况 子类型(如果 统计资料 操作失败:例如,如果路径不存在)。
要确定文件被修改的时间,请比较 !(当前isa StatStruct&&prev==当前) 来检测对mtime或inode的更改的通知。 但是,使用 手表文件对于这种操作是优选的,因为它更可靠和高效,尽管在某些情况下它可能不可用。
这是调用的一个薄包装 等等! 在一个 PollingFileWatcher,它实现了功能,但是这个功能在连续调用之间有一个小的竞争窗口。 poll_文件 文件可能在未被检测到的情况下更改的位置。
# *`FileWatching。手表文件`*-函数
watch_file(path::AbstractString, timeout_s::Real=-1)
监视文件或目录 路径 对于更改,直到发生更改或 timeout_s 几秒钟过去了。 此函数不轮询文件系统,而是使用特定于平台的功能从操作系统接收通知(例如通过Linux上的inotify)。 有关详细信息,请参阅下面链接的NodeJS文档。
返回的值是一个具有布尔字段的对象 重命名, 改变了,而 时间安排,给出观看文件的结果。
此函数的此行为在不同平台之间略有不同。 见https://nodejs.org/api/fs.html#fs_caveats 有关更详细的资料。
这是调用的一个薄包装 等等! 在一个 文件监控器. 此函数在连续调用之间有一个小的竞争窗口 手表文件 文件可能在未被检测到的情况下更改的位置。 为了避免这场比赛,使用
fm = FileMonitor(path)
wait(fm)
直接,重新使用相同 调频 每次你 等等!.
# *`FileWatching。手表文件夹`*-函数
watch_folder(path::AbstractString, timeout_s::Real=-1)
查看文件或目录 路径 对于更改,直到发生更改或 timeout_s 几秒钟过去了。 此函数不轮询文件系统,而是使用特定于平台的功能从操作系统接收通知(例如通过Linux上的inotify)。 有关详细信息,请参阅下面链接的NodeJS文档。
这将继续跟踪更改 路径 在后台直到 unwatch_文件夹 被调用相同 路径.
返回的值是一对,其中第一个字段是已更改文件的名称(如果可用),第二个字段是具有布尔字段的对象 重命名, 改变了,而 时间安排,给予事件。
此函数的这种行为在不同平台上略有不同。 见https://nodejs.org/api/fs.html#fs_caveats 有关更详细的资料。
这个函数是调用的一个薄包装器 等等! 在一个 [医FolderMonitor],增加了超时支持。
# *`FileWatching。unwatch_文件夹`*-函数
unwatch_folder(path::AbstractString)
停止后台跟踪更改 路径. 不建议在另一个任务等待时执行此操作 手表文件夹 以在相同的路径上返回,因为结果可能是不可预测的。
# *`FileWatching。文件监控器`*-类型
FileMonitor(path::AbstractString)
监视文件或目录 路径 (必须存在)进行更改,直到发生更改。 此函数不轮询文件系统,而是使用特定于平台的功能从操作系统接收通知(例如通过Linux上的inotify)。 有关详细信息,请参阅下面链接的NodeJS文档。
fm=FileMonitor(路径) 就像一个自动重置事件,所以 等待(fm) 块,直到文件中至少有一个事件最初在给定的路径,然后返回一个具有布尔字段的对象 重命名, 改变了, 时间安排 总结自上次调用以来发生的所有更改 等等! 回来了。
此函数的此行为在不同平台之间略有不同。 见https://nodejs.org/api/fs.html#fs_caveats 有关更详细的资料。
# *`FileWatching。[医]FolderMonitor`*-类型
FolderMonitor(folder::AbstractString)
查看文件或目录 路径 对于更改,直到发生更改。 此函数不轮询文件系统,而是使用特定于平台的功能从操作系统接收通知(例如通过Linux上的inotify)。 有关详细信息,请参阅下面链接的NodeJS文档。
这类似于一个通道,所以调用 拿! (或 等等!)块,直到发生一些变化。 该 等等! 函数将返回一对,其中第一个字段是更改文件的名称(如果可用),第二个字段是具有布尔字段的对象 重命名 和 改变了,给出在其上发生的事件。
此函数的这种行为在不同平台上略有不同。 见https://nodejs.org/api/fs.html#fs_caveats 有关更详细的资料。
# *`FileWatching。PollingFileWatcher`*-类型
PollingFileWatcher(path::AbstractString, interval_s::Real=5.007)
通过轮询监视文件的更改 统计资料 每个 interval_s 秒,直到发生更改或 timeout_s 几秒钟过去了。 该 interval_s 应该是一个很长的周期;默认值是5.007秒。 打电话 统计资料 在它上面得到最新的,但旧的结果。
这就像一个自动重置事件,所以调用 等等! 块,直到 统计资料 自输入到 等等! 打电话。 该 等等! 函数将返回一对状态对象 (以前的,现在的) 一次 统计资料 检测到自上次以来的变化 等等! 被叫来了。 该 上一次 状态总是一个 [医]状态结构,但它可能将所有字段归零(表示该文件以前不存在,或者以前无法访问)。
该 电流 状态对象可以是 [医]状态结构,安 EOFError,EOFError (如果通过关闭此对象取消等待),或其他一些 例外情况 子类型(如果 统计资料 操作失败:例如,如果路径被删除)。 请注意 统计资料 如果文件再次更改多次,则值可能已过时。
使用 文件监控器对于这种操作是优选的,因为它更可靠和高效,尽管在某些情况下它可能不可用。
# *`FileWatching。外佣工`*-类型
FDWatcher(fd::Union{RawFD,WindowsRawSocket}, readable::Bool, writable::Bool)
监视文件描述符 食物及卫生局 于读或写可用性的变化。
关键字参数确定应监视哪个读取和/或写入状态;其中至少一个参数必须设置为 真的.
返回的值是一个具有布尔字段的对象 可读性, 可写,而 时间安排,给出轮询的结果。
这就像一个级别设置的事件,所以调用 等等! 块,直到满足其中一个条件,但随后继续返回而不阻塞,直到条件被清除(或者没有更多的读取,或者写缓冲区中没有更多的空间,或者两者兼而有之)。
|
警告你必须打电话 |
主要职能
# *`FileWatching。文件。[医]mkpid锁`*-函数
mkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
mkpidlock(at::String, proc::Process; kwopts...)
为当前进程或pid或proc标识的进程的路径"at"创建pidfile锁。 可以在锁定后执行一个函数,以便在 做 块,之后锁将自动关闭。 如果锁失效和 等等! 为false,则抛出错误。
锁将由任何一个释放 接近/接近,一 终结器,终结器,或不久后 proc 出口。 确保返回值是活的,通过你的程序的关键部分的结尾,所以 终结器,终结器 不早收回它。
可选关键字参数:
* 模式:文件访问模式(由进程umask修改)。 默认为世界可读。
* poll_interval:指定尝试之间的最长时间(如果 手表文件 不起作用)
* [医]跟踪:删除现有的pidfile(忽略锁定),如果它比这许多秒,根据其mtime。 如果文件中的pid看起来可能有效,则该文件将不会被删除,直到5x长于此。 或25x更长,如果 刷新 被复盖为0以禁用锁刷新。 默认情况下,这是禁用的([医]跟踪 =0),但一个典型的推荐值将是估计的正常完成时间的3-5倍。
* 刷新:通过在每个时间间隔内更新mtime来防止锁失效。 默认情况下,此设置为 跟踪/2,这是推荐值。
* 等等!:如果为true,阻塞直到我们得到锁,如果为false,如果锁失败则引发错误。
# *`FileWatching。文件。trymkpidlock,trymkpidlock`*-函数
trymkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
trymkpidlock(at::String, proc::Process; kwopts...)
像 [医]mkpid锁 申报表除外 错误 而不是等待,如果文件已经被锁定。
|
兼容性
Julia1.10此功能至少需要Julia1.10。 |
|
缺少docstring。 缺少docstring |
辅助函数
# *`FileWatching。文件。[医]隐匿性`*-函数
tryopen_exclusive(path::String, mode::Integer = 0o444) :: Union{Void, File}
尝试创建一个新文件以进行读写非独占访问,如果它已经存在,则不返回任何内容。
# *`FileWatching。文件。parse_pidfile`*-函数
parse_pidfile(file::Union{IO, String}) => (pid, hostname, age)
尝试解析我们的pidfile格式,将一个元素分别替换为(0,"",0.0),用于任何失败的读取。
# *`FileWatching。文件。stale_pidfile`*-函数
stale_pidfile(path::String, stale_age::Real, refresh::Real) :: Bool
辅助函数 [医]开放式 用于决定pidfile是否过时。
# *`FileWatching。文件。isvalidpid,isvalidpid`*-函数
isvalidpid(hostname::String, pid::Cuint) :: Bool
尝试保守估计pid是否是有效的进程id。