UNIX系统的大多数文件是普通文件或目录,但是也有另外一些文件类型。文件类型包括如下几种。
(1)普通文件(regular file).这是最常用的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据,对于UNIX内核而言并无区别。对于普通文件内容的解释由处理文件的应用程序进行。
(一个值得注意的例外是二进制可执行文件。为了执行程序,内核必须理解其格式。所有二进制可执行文件都遵循一种标准化的格式,这种格式使内核能够确定程序文本和数据加载的位置,比如windows上面的EXE可执行文件放到UNIX下就不能执行,因为UNIX不知道EXE程序文本和数据加载的位置。)
(2)目录文件(directory file)。这种文件包含了其他文件的命字以及指向与这些文件有关信息的指针。对一个目录文件具有读权限的任一进程都可以读该目录的内容,但只有内核可以直接写目录文件。进程必须使用函数才能更改目录。
(3)块特殊文件(block special file)。这种类型的文件提供对设备(如磁盘)带缓冲的访问,每次访问可以固定长度为单位进行。
**注意:**FreeBSD不再支持块特殊文件。对设备的所有访问需要通过字符串特殊文件进行。
(4)字符特殊文件(character special file)。这种类型的文件提供对设备不带缓冲的访问,每次访问长度可变。系统中所有设备要么是字符特殊文件,要么是块特殊文件。
(5)FIFO。这种类型的文件用于进程间通信,有时也称为命名管道(named pipe)
(6)套接字(socket)。这种类型的文件用于进程间的网络通信。套接字也可用于在一台宿主机上进程之间的非网络通信。
(7)符合链接(symbolic link).这种类型的文件指向另一个文件。
文件类型信息包含在stat结构的st_