Linux中link,unlink,close,fclose详解
来源:互联网 发布:萌币捏脸数据 编辑:程序博客网 时间:2024/06/06 02:04
每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。
当通过shell的touch命令或者在程序中open一个带有O_CREAT的不存在的文件时,文件的链接数为1。通常open一个已存在的文件不会影响文件的链接数。open的作用只是使调用进程与文件之间建立一种访问关系,即open之后返回fd,调用进程可以通过fd来read 、write 、 ftruncate等等一系列对文件的操作。
close()就是消除这种调用进程与文件之间的访问关系。自然,不会影响文件的链接数。在调用close时,内核会检查打开该文件的进程数,如果此数为0,进一步检查文件的链接数,如果这个数也为0,那么就删除文件内容。
link函数创建一个新目录项,并且增加一个链接数。
unlink函数删除目录项,并且减少一个链接数。如果链接数达到0并且没有任何进程打开该文件,该文件内容才被真正删除。如果在unlilnk之前没有close,那么依旧可以访问文件内容。
综上所诉,真正影响链接数的操作是link、unlink以及open的创建。
删除文件内容的真正含义是文件的链接数为0,而这个操作的本质完成者是unlink。close能够实施删除文件内容的操作,必定是因为在close之前有一个unlink操作。
举个例子简单说明:通过shell touch test.txt
顺次执行以上8个步骤,结果如下:
实例分析:
阅读全文
0 0
- Linux中link,unlink,close,fclose详解
- linux中link,unlink,close,fclose详解 .
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- Linux中link,unlink,close,fclose详解
- 方唯上传程序后不能登录后台
- BinaryTree的构建和遍历,以及搜索删除(非完全二叉树,非平衡二叉树)
- Weblogic基本介绍、安装以及myeclipse的配置
- 闲聊软件测试自动化(4):我们怎样实现期望的测试自动化?
- Centos 6.X 安装Apache
- Linux中link,unlink,close,fclose详解
- tp中的笑脸的样式
- UVA
- 自动生成set方法、get方法、构造函数、规范化代码 (转载于度娘)
- Struts2 的上传和下载
- CSU
- java word转pdf,pdf显示到浏览器
- hashtable桶大小取质数
- Mysql导入大容量SQL报错修改配置文件