AnyMath 文档

文件事件

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

监视文件描述符 食物及卫生局 对于在读取或写入可用性的变化,并与由给定的超时 timeout_s 几秒钟。

关键字参数确定应监视哪个读取和/或写入状态;其中至少一个参数必须设置为 真的.

返回的值是一个具有布尔字段的对象 可读性, 可写,而 时间安排,给出轮询的结果。

这是调用的一个薄包装 等等! 在一个 外佣工,它实现了功能,但需要用户调用 接近/接近 手动完成后,或面临严重崩溃的风险。

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_文件 文件可能在未被检测到的情况下更改的位置。

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)

直接,重新使用相同 调频 每次你 等等!.

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

查看文件或目录 路径 对于更改,直到发生更改或 timeout_s 几秒钟过去了。 此函数不轮询文件系统,而是使用特定于平台的功能从操作系统接收通知(例如通过Linux上的inotify)。 有关详细信息,请参阅下面链接的NodeJS文档。

这将继续跟踪更改 路径 在后台直到 unwatch_文件夹 被调用相同 路径.

返回的值是一对,其中第一个字段是已更改文件的名称(如果可用),第二个字段是具有布尔字段的对象 重命名, 改变了,而 时间安排,给予事件。

此函数的这种行为在不同平台上略有不同。 见https://nodejs.org/api/fs.html#fs_caveats 有关更详细的资料。

这个函数是调用的一个薄包装器 等等! 在一个 [医FolderMonitor],增加了超时支持。

unwatch_folder(path::AbstractString)

停止后台跟踪更改 路径. 不建议在另一个任务等待时执行此操作 手表文件夹 以在相同的路径上返回,因为结果可能是不可预测的。

FileMonitor(path::AbstractString)

监视文件或目录 路径 (必须存在)进行更改,直到发生更改。 此函数不轮询文件系统,而是使用特定于平台的功能从操作系统接收通知(例如通过Linux上的inotify)。 有关详细信息,请参阅下面链接的NodeJS文档。 fm=FileMonitor(路径) 就像一个自动重置事件,所以 等待(fm) 块,直到文件中至少有一个事件最初在给定的路径,然后返回一个具有布尔字段的对象 重命名, 改变了, 时间安排 总结自上次调用以来发生的所有更改 等等! 回来了。

此函数的此行为在不同平台之间略有不同。 见https://nodejs.org/api/fs.html#fs_caveats 有关更详细的资料。

FolderMonitor(folder::AbstractString)

查看文件或目录 路径 对于更改,直到发生更改。 此函数不轮询文件系统,而是使用特定于平台的功能从操作系统接收通知(例如通过Linux上的inotify)。 有关详细信息,请参阅下面链接的NodeJS文档。

这类似于一个通道,所以调用 拿! (或 等等!)块,直到发生一些变化。 该 等等! 函数将返回一对,其中第一个字段是更改文件的名称(如果可用),第二个字段是具有布尔字段的对象 重命名改变了,给出在其上发生的事件。

此函数的这种行为在不同平台上略有不同。 见https://nodejs.org/api/fs.html#fs_caveats 有关更详细的资料。

PollingFileWatcher(path::AbstractString, interval_s::Real=5.007)

通过轮询监视文件的更改 统计资料 每个 interval_s 秒,直到发生更改或 timeout_s 几秒钟过去了。 该 interval_s 应该是一个很长的周期;默认值是5.007秒。 打电话 统计资料 在它上面得到最新的,但旧的结果。

这就像一个自动重置事件,所以调用 等等! 块,直到 统计资料 自输入到 等等! 打电话。 该 等等! 函数将返回一对状态对象 (以前的,现在的) 一次 统计资料 检测到自上次以来的变化 等等! 被叫来了。 该 上一次 状态总是一个 [医]状态结构,但它可能将所有字段归零(表示该文件以前不存在,或者以前无法访问)。

电流 状态对象可以是 [医]状态结构,安 EOFError,EOFError (如果通过关闭此对象取消等待),或其他一些 例外情况 子类型(如果 统计资料 操作失败:例如,如果路径被删除)。 请注意 统计资料 如果文件再次更改多次,则值可能已过时。

使用 文件监控器对于这种操作是优选的,因为它更可靠和高效,尽管在某些情况下它可能不可用。

FDWatcher(fd::Union{RawFD,WindowsRawSocket}, readable::Bool, writable::Bool)

监视文件描述符 食物及卫生局 于读或写可用性的变化。

关键字参数确定应监视哪个读取和/或写入状态;其中至少一个参数必须设置为 真的.

返回的值是一个具有布尔字段的对象 可读性, 可写,而 时间安排,给出轮询的结果。

这就像一个级别设置的事件,所以调用 等等! 块,直到满足其中一个条件,但随后继续返回而不阻塞,直到条件被清除(或者没有更多的读取,或者写缓冲区中没有更多的空间,或者两者兼而有之)。

警告你必须打电话 接近/接近 手动完成此对象后,在fd参数关闭之前。 如果不这样做,就会有严重崩溃的风险。

文件/文件

一个简单的实用工具,用于创建咨询pidfiles(锁定文件)。

主要职能

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,如果锁失败则引发错误。

trymkpidlock([f::Function], at::String, [pid::Cint]; kwopts...)
trymkpidlock(at::String, proc::Process; kwopts...)

[医]mkpid锁 申报表除外 错误 而不是等待,如果文件已经被锁定。

兼容性

Julia1.10此功能至少需要Julia1.10。

缺少docstring。 缺少docstring 关闭(锁). 查看Documenter的构建日志以获取详细信息。

辅助函数

open_exclusive(path::String; mode, poll_interval, wait, stale_age, refresh) :: File

创建一个新的a文件,用于读写-独占访问。 如果 等等!错误 然后出错,如果锁文件存在,否则阻塞,直到我们得到锁。

有关关键字参数的说明,请参阅 [医mkpid锁].

tryopen_exclusive(path::String, mode::Integer = 0o444) :: Union{Void, File}

尝试创建一个新文件以进行读写非独占访问,如果它已经存在,则不返回任何内容。

write_pidfile(io, pid)

将我们的pidfile格式写入一个开放的IO描述符。

parse_pidfile(file::Union{IO, String}) => (pid, hostname, age)

尝试解析我们的pidfile格式,将一个元素分别替换为(0,"",0.0),用于任何失败的读取。

stale_pidfile(path::String, stale_age::Real, refresh::Real) :: Bool

辅助函数 [医]开放式 用于决定pidfile是否过时。

isvalidpid(hostname::String, pid::Cuint) :: Bool

尝试保守估计pid是否是有效的进程id。

Base.touch(::Pidfile.LockMonitor)

更新 m时间 在锁上,表明它仍然是新鲜的.

请参阅 刷新 关键字在 [医mkpid锁]构造函数。