25 个稳定版本 (11 个主要版本)
新 14.0.2 | 2024 年 8 月 22 日 |
---|---|
14.0.1 | 2024 年 7 月 23 日 |
14.0.0 | 2024 年 5 月 22 日 |
13.1.1 | 2024 年 3 月 14 日 |
3.0.2 | 2023 年 2 月 17 日 |
#37 in 文件系统
493,261 每月下载量
在 232 个 Crates 中使用 (7 直接使用)
75KB
1.5K SLoC
使用 tempfiles 以原子方式在信号安全的方式下准备覆盖或创建新内容的新文件,以最小化资源泄漏的风险。
Tempfiles 也可以用作锁,因为同一时间只有一个 tempfile 可以存在于给定路径。
- 注册的临时文件在进程终止或丢弃时自动删除
- 写入临时文件并在新名称下持久化
- 关闭临时文件以将其转换为标记并节省系统资源
- 使用已关闭的临时文件标记路径
- 持久化临时文件以防止其消失。
- 与
gix
的信号处理器集成,在进程终止前清理锁文件。 - 由于实现了
std::io
特性,可以透明地使用临时文件
lib.rs
:
在典型终止信号终止时移除的 git 风格注册的临时文件。
在创建第一个 tempfile 之前,调用 [gix_tempfile::signal::setup(Default::default())
][signal::setup()] 来注册信号处理器。
信号处理器由 signal-hook
驱动,以便在应用被告知关闭时通知,确保临时文件被删除。删除是通过进程 ID 过滤的,以允许子进程有自己的临时文件集合,这些临时文件在父进程退出时不会被删除。
初始设置
由于没有安装 TERMination
处理器,必须在创建第一个 tempfile 之前调用 [signal::setup()
]。这也允许在应用控制下控制该 crate 如何与其他处理器集成。
一般来说,可以使用Default::default()
作为参数来模拟默认行为,并在清理临时文件后终止进程。更多关于选项的信息,请参阅signal::handler::Mode
。
限制
临时文件可能仍然存在于磁盘上
- 收到不可中断的信号,如
SIGKILL
- 当信号到来时,应用程序正在对临时文件执行写操作,这阻止了删除该临时文件,但不会阻止其他文件。任何其他与临时文件相关的操作都会遇到相同的问题。
功能标志
依赖
~3–12MB
~189K SLoC