文件和目录(摘自UNIX环境高级编程等)

上一节介绍了文件I/O操作,主要是文件的打开和文件的read和write。本节将介绍文件系统的其它属性和文件的性质。

1、stat、fstat和lstat函数

stat函数返回一个于此命名文件有关的信息结构,fstat返回已在文件描述符fields上打开的文件的有关信息。lstat类似于stat,但当命名的文件是一个符号连接时,返回符号链接的相关信息。

三个函数的返回:若成功则为0,若出错则为-1。

2、文件类型

(1)普通文件

(2)目录文件

(3)字符特殊文件

(4)块特殊文件,这种文件典型用于磁盘设备。系统中的所有文件或者是字符特殊文件,或者是块特殊文件。

(5)FIFO,用于进程间通信,有时称其为命名管道。

(6)套接口(socket),用于进程间的网络通信,也可用于在一台主机上的进程间的通信。

(7)符号连接,这种文件指向另一种文件。

3、设置-用户-ID和设置-组-ID

与一个进程相关联的ID有六个或更多。

注意:文件的实际用户ID;有效用ID;另外每一个文件都有一个所有者和组所有者。

4、文件存取许可权

每个文件有9个存取许可权位,可以分为3类读、写和执行。chmod命令用于修改这9个许可权位。

进程每次打开、创建和删除某个文件时,内核都进行文件存取许可权测试。有四步。

当用open或create创建新文件时,新文件的用户ID和组ID的值是什么呢?(用户ID就是进程的有效用户ID,组ID,可以是进程的有效组ID或它所在目录的组ID)

5、access函数

前面当用open函数创建一个文件时,内核是以文件的有效用户ID和有效组ID为基础进行存取权限检测的。这里access函数是按实际用户ID和实际组ID进行存取许可检测的。

6、umask函数、chmod和fchmod函数

umask函数是用来设置文件方式创建屏蔽字的。

chmod和fchmod可以更改现存文件的存取许可权。注意为了改变文件的许可权位,进程的有效用户ID,必须等于文件的所有者。或者进程具有超级用户许可权。

chown,fchown和lchown可以更改文件的用户ID和组ID。

stat结构的st_size成员包含了以字节为单位的该文件的长度。

有时我们需要在文件的尾端除截去一些数据以缩短文件,将一个文件长度截短为0是一个特例,用O_TRUNC标志可以做到这一点,为了截短文件我们可以调用函数truncate和ftruncate函数。

7、文件系统

我们可以把一个磁盘分成多个分区,每个分区包含一个文件系统。四块:

捕获

i节点是固定长度的记录项,存有文件的相关信息。

文件连接的概念:指的是指向一个文件i节点的目录项与该文件i节点之间的连接。

可以有多个目录指向同一节点。

连接计数的概念。

8、link,unlink,remove和rename函数

创建一个指向现存文件连接的方法是使用link函数。即创建一个新的目录项。

删除现存的目录项,可以调用unlink函数。

也可用remove函数解除对一个文件或目录的连接。

更改文件或目录的名字用rename函数。

9、符号连接

符号连接是一个对文件的间接指针,和硬连接有所不同,硬连接直接指向文件的i节点。

10、utime函数

一个文件的存取和修改时间可以用utime函数更改。

11、mkdir和rmdir函数

用mkdir函数创建目录,用rmdir函数删除目录。

12、chdir,fchdir和getcwd函数

进程调用chdir或fchdir函数可以更改当前工作目录。pwd命令可获取当前工作目录。

getcwd函数可以获取当前工作目录的绝对路径名。

 

附:1、struct ifreq在usr/include/net/if.h文件中,是保存接口信息的结构体。

你可能感兴趣的:(信息,write,的)