记unlink使用时发现的一个小现象
Linux系统函数unlink,可以替代remove做文件的删除,具体可以Google。
测试代码如下:
#include <fcntl.h> //open
#include <sys/types.h> //stat
#include <sys/stat.h>
#include <unistd.h> //link,unlink
#include <stdio.h>
int main() {
int fd=open("tempfile.txt",O_WRONLY | O_CREAT | O_TRUNC ,644);
// unlink("tempfile.txt");
sleep(100000);
return 0;
}
-
当unlink被注释掉时
进程执行过程中通过ls可以查看到tempfile.txt文件 -
当unlink的注释打开
进程执行过程中通过ls看不到tempfile.txt文件
但通过lsof -n | grep tempfile.txt
可以看到如下信息:
文件虽被标记为deleted
但仍处于被使用状态。当进程退出,所有文件信息都会消失,磁盘空间被释放,如下:
deleted
表示文件已删除,但磁盘空间尚未释放。