linux系统的一大特点就是一切皆文件,包括文件,目录,设备文件,管道,套接字等等。这种设计理念让用户可以访问任意文件,只要用户有足够的访问权限,这使得linux系统的文件系统结构简单,方便用户理解和管理。
Linux系统里包含的文件类型有管道文件,套接字,字符设备文件,块设备文件和普通文件及目录,可以使用ls -ll查看文件的文件类型,输出信息的最左侧一列,会显示-rw-rw-r—的信息,其中第一个字符表示文件类型,有如下几种类型:
-(横杆):表示普通文件;
d:表示目录;
l:表示链接;
b:表示块设备文件;
c:表示字符设备文件;
p:表示管道文件;
s:表示socket套接字文件;
块设备文件块设备一般用于以块为单位进行数据传输的文件,支持按块进行读写,如硬盘,驱动器等。块设备的I/O操作是缓存的,并且可以一次性读写多个数据块,因此块设备具有很高的数据传输效率。块设备文件默认是在/dev目录下。如图1,/dev/sda*是一个很典型的块设备文件。
图1
字符设备文件字符设备文件是一种以字节流进行读写的设备,常用的设备有串口,键盘和鼠标等,并且字符设备文件的I/O操作是非缓存的,因此数据会实时传输,不会存储在内存缓冲区。如图2:
图2
管道文件管道文件可以使用mkfinfo命令进行创建(如图3),创建后的管道文件可以用于不同进程间通信。
图3
socket套接字文件常用于网络编程,用于进程间,或者设备间的通信,常用的有UDP,TCP套接字。有三个特殊的套接字,为0:标准输入,1:标准输出,2:标准错误输出。如图4:
如图4