in c Coding ~ read.

记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但仍处于被使用状态。

    当进程退出,所有文件信息都会消失,磁盘空间被释放,如下:
    deleted1

deleted表示文件已删除,但磁盘空间尚未释放。