APUE 学习笔记(三) 文件和目录

1. 文件类型

文件类型信息包含在 struct stat 里的 st_mode 成员网络

(1)普通文件, unix内核并不区分文本文件和二进制文件
(2)目录文件,这种文件包含了其余文件的名字以及指向这些文件有关信息的指针
(3)块特殊文件
(4)字符特殊文件
(5)FIFO, 经常使用于进程间通讯,也称为管道
(6) 套接字socket,经常使用于进程间网络通讯
(7)符号连接 ( 必须使用lstat函数,获取的是符号连接自己的类型信息,而不是符号连接所指向的文件的类型信息)
 

2.文件长度

stat结构成员st_size 以字节为单位,此字段只对 普通文件、目录文件、符号连接有意义
对于符号连接,st_size 成员表示 该符号连接所指向的文件的文件名长度
 

3.文件系统

 
i节点是固定长度的记录项,包含有关文件的大部分信息
 
(1)每一个i节点中都有一个连接计数,其值是指向该i节点的目录项数。 只有当连接计数减小至0时,才能够删除该文件
stat结构体中 st_nlink成员表示连接计数。这种类型成为硬连接
 
(2)符号连接:该文件的实际内容包含了该符号连接所指向的文件的名字
符号连接是指向一个文件的间接指针,硬连接直接指向文件的i节点
硬连接有一些限制:
a.硬连接一般要求连接和文件位于 同一文件系统中
b.只有超级用户才能建立指向目录的硬连接
符号连接没有这两个限制,任何用户均可以建立符号连接,且没有文件系统限制
 
用open打开文件时,若是传递给open函数的路径名指定了一个符号连接,那么open跟随此连接到达你所连接的文件,若是该文件不存在,那么open出错
open函数跟随符号连接,读取符号连接自己必须使用 readlink函数
 
(3)每一个分区的文件系统各自对它们的i节点进行编号,所以不能是一个目录项指向另外一个文件系统的i节点,也就是ln命令不能跨越文件系统的缘由
 

4.目录操做

opendir
readdir
seekdir
closedir
mkdir
rmdir
相关文章
相关标签/搜索