【发布时间】:2026-02-06 19:55:01
【问题描述】:
我想在 linux 上创建一个临时文件,同时确保该文件在我的程序终止后会消失,即使它被杀死或有人在错误的时刻执行了硬重启。 tmpfile() 会为我处理这一切吗?
【问题讨论】:
-
@JarrodRoberson 我将重新添加 [race-condition] 标签 - 这是关于
open()和unlink()之间的时间窗口。 -
@JarrodRoberson:呃,你不是在说死锁吗?我对“竞争条件”的定义类似于“有一些并行过程,并且取决于它们在竞争中的速度,会发生不同的事情”。让我们看一下英文*是怎么说的:“竞态条件或竞态危害是电子系统或过程中的一个缺陷,该过程的输出或结果出乎意料地严重依赖于其他事件的顺序或时间。”
-
“当程序由于意外的事件排序导致对同一资源的争用而无法按预期运行时,就会出现竞争条件。” 我假设从您的 cmets 来看,您特别关注的是 dead-lock,这是尝试修复竞争条件(共享资源争用)的结果。目前尚不清楚您的担忧是什么,如果您的应用程序真的那么脆弱,那么在调用
unlink()之前调用tmpfile()并让程序异常退出是您最不用担心的。
标签: linux temporary-files