4.3 文件类型

至今我们已介绍了两种不同的文件类型—普通文件和目录。UNIX系统的大多数文件是普通文件或目录,但是也有另外一些文件类型:

(1) 普通文件 (regular file)。这是最常见的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据对于内核而言并无区别。对普通文件内容的解释由处理该文件的应用程序进行。

(2) 目录文件 (directory file)。这种文件包含了其他文件的名字以及指向与这些文件有关信息的指针。对一个目录文件具有读许可权的任一进程都可以读该目录的内容,但只有内核可以写目录文件。

(3) 字符特殊文件 (character special file)。这种文件用于系统中某些类型的设备。

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

(5) FIFO。这种文件用于进程间的通信,有时也将其称为命名管道。14.5 节将对其进行说明。

(6) 套接口 (socket)。这种文件用于进程间的网络通信。套接口也可用于在一台宿主机上的进程之间的非网络通信。第15章将用套接口进行进程间的通信。只有4.3+BSD才返回套接口文件类型,虽然SVR4支持用套接口进行进程间通信,但现在是经由套接口函数库实现的,而不是通过内核内的套接口文件类型,将来的SVR4版本可能会支持套接口文件类型。

(7) 符号连接 (symbolic link)。这种文件指向另一个文件。4.16节将更多地述及符号连接。文件类型信息包含在stat结构的st_mode成员中。可以用表4-1中的宏确定文件类型。这些宏的参数都是stat结构中的st_mode成员。

表4-1在中的文件类型宏

宏文件类型

S_ISREG() 普通文件

S_ISDIR() 目录文件

S_ISCHR() 字符特殊文件

S_ISBLK() 块特殊文件

相关链接: