25个版本 (稳定)
3.0.3 | 2023年2月17日 |
---|---|
3.0.1 | 2023年1月10日 |
3.0.0 | 2022年11月21日 |
2.0.6 | 2022年11月6日 |
0.4.0 | 2021年6月23日 |
#9 in #gix
1,064 每月下载量
在 16 个crate中使用(直接使用4个)
42KB
761 行
使用临时文件以在信号安全的方式准备覆盖或创建新内容时最小化资源泄漏的风险,使更改原子的。
临时文件也可以用作锁,因为同一时间只能有一个临时文件存在于给定路径。
- 注册的临时文件会在进程终止或释放时自动删除
- 写入临时文件并在新名称下持久化
- 关闭临时文件以将它们转换为标记并节省系统资源
- 使用关闭的临时文件标记路径
- 持久化临时文件以防止它们丢失。
- 通过
gix
与信号处理器集成,在进程终止前清理锁文件。 - 由于实现了
std::io
traits,可以透明地使用临时文件
lib.rs
:
在典型终止信号时删除的git风格的注册临时文件。
要在没有自己的信号处理器的典型应用程序中注册信号处理器,请在创建第一个临时文件之前调用 [git_tempfile::setup(Default::default())
][setup()]
信号处理器由 signal-hook
驱动,当应用程序被告知关闭时通知应用程序,以确保临时文件被删除。删除通过进程ID进行过滤,以允许子进程有自己的临时文件集,当父进程退出时不会删除。
初始设置
由于未安装对 TERMination
的处理程序,需要在创建第一个临时文件之前调用 [setup()
]。这也允许在应用控制下控制 git-tempfiles
如何与其他处理程序集成。
一般来说,将 Default::default()
用作参数以模拟默认行为,并在清理临时文件后终止进程。更多关于选项的信息,请参阅 [SignalHandlerMode]。
局限性
临时文件可能留在磁盘上
- 接收到的不可中断信号如
SIGKILL
- 当信号到达时,应用程序正在对临时文件执行写操作,这阻止删除该临时文件,但不会影响其他文件。任何其他与临时文件相关的操作都会遇到同样的问题。
依赖关系
~3–11MB
~128K SLoC