【发布时间】:2018-09-04 15:41:11
【问题描述】:
我有一个必须创建临时文件的 Linux 动态库。这些文件必须有一个文件名——它们不能被创建并立即取消链接。我也无法拦截像SIGINT 和SIGKILL 这样的信号,因为这是一个被其他程序使用的库。
当创建文件的进程被杀死时,是否有一种理智的方法可以自动删除文件?
说明:
- 这些确实是我的限制。当我刚刚在问题中说我不能
unlink()时,请不要回答说“你可以unlink()”。 - 我意识到这需要操作系统支持 - 很明显,当我的程序被杀死时,它就无法运行任何代码本身来删除文件。但可能有一些方法可以标记文件,以便操作系统删除它们。
例如,Windows 有一个"delete on close" 选项,这意味着当您的程序被杀死时,它所打开的所有文件都会被关闭并自动删除(我认为;我没有尝试过)。如果在某个地方存在这样的功能,那么理论上在 Linux 上这样的事情显然是可能的。我只想知道有没有。
【问题讨论】:
-
请显示一些代码...作为minimal reproducible example
-
这个问题不需要代码。
-
这是你的意见。
-
为什么他们必须保留文件名?
-
@BasileStarynkevitch,诸如“为什么这段代码不起作用?”之类的问题。必须提供 MCVE。这个问题不符合这种模式。 LLVM 无关紧要,因为与任何只接受文件名的程序交互都会遇到同样的问题。
标签: c++ linux temporary-files