gpt4 book ai didi

c++ - 库被杀死时自动删除库创建的文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:17 28 4
gpt4 key购买 nike

我有一个必须创建临时文件的 Linux 动态库。这些文件必须有一个文件名——它们不能被创建并立即取消链接。我也无法拦截像 SIGINTSIGKILL 这样的信号,因为这是一个被其他程序使用的库。

有没有一种明智的方法可以在创建文件的进程被终止时自动删除文件?

说明:

  1. 这些确实是我的限制。当我刚刚在问题中说我不能 unlink() 时,请不要回答说“你可以 unlink()”。
  2. 我意识到这将需要操作系统支持 - 显然当我的程序被终止时它不能运行任何代码自身来删除文件。但可能有一些方法可以标记文件,以便操作系统删除它们。

例如 Windows 有一个 "delete on close"选项,这意味着当你的程序被杀死时,它所有打开的文件都会被关闭并自动删除(我想;我没试过)。如果某处存在这样的功能,那么理论上在 Linux 上显然是可能的。我只想知道它是否如此。

最佳答案

创建一个文件,然后将 /proc/self/fd/X 传递给 LLVM,其中 X 是您的文件描述符。您现在可以取消链接(如 Basile 建议的那样),

由于 /proc/self 只有在您的程序关闭时才会消失,因此名称和文件会存在足够长的时间。

关于c++ - 库被杀死时自动删除库创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52169894/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com