unlink函数 与 remove函数

1. 查看 unlink 在帮助手册中的说明:
unlink() deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse.
If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.
根据描述,unlink 会删除文件名,并减少连接数。如果是最后一个连接并且没有进程打开文件,文件将会被删除,并释放空间。如果是最后一个连接但是有进程打开文件,文件仍会存在,直到打开的文件被关闭。
根据描述,unlink 会删除文件名,并减少连接数。如果是最后一个连接并且没有进程打开文件,文件将会被删除,并释放空间。如果是最后一个连接但是有进程打开文件,文件仍会存在,直到打开的文件被关闭。

现在看一个例子:
[root@localhost tmp]# echo “hello” > a.txt
[root@localhost tmp]# ln a.txt a.txt.ln # 创建一个硬连接,a.txt和a.txt.ln指向的是相同的磁盘内容
[root@localhost tmp]# ll
total 40
-rw-r–r-- 2 root root 6 Feb 26 13:21 a.txt
-rw-r–r-- 2 root root 6 Feb 26 13:21 a.txt.ln
-rw-r–r-- 1 root root 511 Dec 22 10:15 device.info
drwxr-xr-x 2 root root 4096 Jul 25 2016 vmware-root
drwx------ 2 root root 4096 Jul 25 2016 vmware-root-2117350667
[root@localhost tmp] # 现在a.txt和a.txt.ln的连接数都是2(ll命令显示的第二列表示连接数),下面用unlink命令删除a.txt(unlink命令是直接调用unlink函数来实现的)
[root@localhost tmp]# unlink a.txt
[root@localhost tmp]# ll
total 32
-rw-r–r-- 1 root root 6 Feb 26 13:21 a.txt.ln
-rw-r–r-- 1 root root 511 Dec 22 10:15 device.info
drwxr-xr-x 2 root root 4096 Jul 25 2016 vmware-root
drwx------ 2 root root 4096 Jul 25 2016 vmware-root-2117350667
[root@localhost tmp]# 现在a.txt被删除了,同时a.txt.ln的连接数变成了1。说明unlink会删除文件名,并减少连接数。但是a.txt占用的磁盘空间还是存在的,需要a.txt.ln被删除后,占用的空间才会被释放。

2. 查看 remove 在帮助手册中的说明:
remove() deletes a name from the filesystem. It calls unlink() for files, and rmdir() for directories.
If the removed name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse.
If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it
is closed.

通过描述,可以看出在remove比unlink多了个删除目录的功能,在删除文件时,remove和unlink的功能是一样的。

转自《unlink函数 与 remove函数》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值