我正在考虑让我的应用程序在/tmp
中创建一个文件。我所做的只是制作一个临时文件,将其复制到一个新位置。天气好的时候,这看起来像:
- 编写临时文件
- 将临时文件移动到新位置
但是,在我的系统(RHEL 7(上,/usr/lib/tmpfiles.d/tmp.conf
处有一个文件,表明/tmp
每10天清理一次。据我所知,这是默认安装。所以,我担心的是,我有以下情况:
- 编写临时文件
/tmp
被清理- 将临时文件移动到新位置(爆炸(
我的担忧有根据吗?如果是这样的话,如何在复杂的程序中解决这个问题?如果没有复杂的技巧,那我就有点困惑了,因为如果/tmp
在任何时候都能被完全摧毁,我对它的效用没有一个具体的了解。
如果在操作过程中打开文件描述符,这应该不会有问题。只要文件描述符打开,FS就会将文件保存在磁盘上,但在使用ls时它不会出现;重新检测";在某种程度上。在已删除的文件上保持打开的fd是在linux 上创建临时文件的常见方法
见男子3取消链接:
unlink((函数应删除指向文件的链接。[..]unlink((将删除由指向的路径名命名的链接路径,并应递减文件的链接计数链接引用的。
当文件的链接数变为0并且没有进程打开文件时,文件占用的空间将被释放,并且文件将不再可访问。如果一个或多个进程在删除最后一个链接时打开文件,在unlink((返回之前应删除该链接,但文件内容应推迟到对该文件的引用将关闭。