Unix/Linux函数unlink的作用,以及命令du和df的差别。

首先,創建一個比較大的文件,使用dd命令。
dd if=/dev/zero of=/home/leon/tmpfile bs=1024 count=1048576
這樣就創建了一個大小為1G的文件。
執行下面的程序:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>

int main(int argc,char **argv)
{
	if(open("tempfile",O_RDWR) < 0){
		fprintf(stderr,"open error");
		exit(-1);
	}

	if(unlink("tempfile") < 0){
		fprintf(stderr,"unlink error");
		exit(-1);
	}

	printf("file unlinked\n");
	sleep(15);
	printf("done\n");
	exit(0);
}

在程序sleep的時候,執行df命令,查看硬盤空間;
程序結束的時候,再次執行df命令,查看硬盤空間,會發現硬盤空閒資源多了1G。
而執行du命令,則不會有任何區別。
原因是:
    unlink的功能是當該文件沒有被其它任何文件鏈接,並且沒有進程在訪問該文件的情況下,才將文件真正的刪除。

du和df的區別:
    du -s命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数;
    df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。
    du是用户级程序,不考虑Meta Data(系统为自身分配的一些磁盘块)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值