美国服务器Linux系统的文件类型有分很多种类型,但是有部分美国服务器用户可能都不太了解这些文件类型,所以今天美联科技小编就解析下其中几个美国服务器Linux系统文件类型。
1、管道文件
管道分为匿名管道和命名管道。管道都是一端写入、另一端读取,属于单方向数据传输,数据也都是直接在内存中传输的,管道是进程间通信的一种方式,例如父进程写,子进程读。
在shell中匿名管道就是一个管道符号“|”,例如ls | grep xxx,其中ls对应的进程是这个独立进程组中的父进程,grep对应的进程是子进程,父进程写子进程读。
在编程语言中,匿名管道是通过创建两个文件句柄或文件描述符来实现的,一个文件句柄用于写数据,例如A写入端,数据写入A将自动推入B中,另一个文件句柄用于读数据。
对于命名管道,即有名称的管道,命名管道将文件保留在文件系统中,它也称为FIFO。虽然命名管道文件保留在文件系统中,但是这个文件只是使用命名管道的一个入口,在使用命名管道传输数据的时候,仍然是在内存中进行的,也就是说并不会因为保留在文件系统上命名管道的效率就低了。
在shell中,可以使用mknod命令或mkfifo命令创建命名管道,在写某些特殊需求的shell脚本时,命名管道非常有用。
一般的管道都是单向通信的,无法实现双向通信的功能,也就是只能一边写一边读,不能两边都能读、写。如果要实现双向通信,可以创建两根管道,或者使用更方便的套接字。
2、套接字(Socket)
套接字用来实现两端通信,正如上面分析的,可以实现双向管道的进程间通信功能。不仅如此,套接字还能通过网络实现跨主机的进程间通信功能。套接字需要成对才有意义,也就是分为两端,每一端都有用于读、写的文件描述符,相当于两根双向通信的管道。
套接字根据协议族的方式分为两大类:网络套接字和Unix Domain套接字。当然,从协议族往下,套接字可细分为很多种类型,例如INET套接字可以分为TCP套接字、UDP套接字、链路层套接字、Raw套接字等等。其中网络套接字是网络编程的基础和核心。
3、Unix Domain套接字
对于单机的进程间通信,使用Unix Domain套接字比Inet套接字更好,因为Unix Domain套接字没有网络通信组件,也就是少了很多网络功能,更加轻量。
Unix Domain套接字有两个文件句柄,这两个文件句柄都是同时可读、可写的句柄。进程1向A写入数据,将自动推送到B上,进程2可从B上读取从A写入的数据,同理进程2向B中写入数据将自动推送到A上,进程1可从A上读取从B写入的数据。
在编程语言中,创建Unix Domain Socket自然有对应的函数轻松创建。对于bash shell,可以通过nc命令来创建,或者干脆使用两个命名管道来实现对应的功能。
4、网络套接字
对于跨网络的进程间通信,需要使用网络套接字。每个网络套接字都由5部分组成,它们称为套接字的5元组。格式如下:
{protocol, src_addr, src_port, dest_addr, dest_port}
即协议、源地址、源端口、目标地址、目标端口。
每端套接字在内核空间都有两个buffe,每一端都有recv buffer和send buffer。进程1向自己的套接字的send buffer写入数据,将发送到对端的recv buffer中,然后对端的进程2就可以从recv buffer中读取数据。
但是在真正可以读、写网络套接字之前,网路套接字还需要一些设置。服务端套接字创建socket函数,创建后就会有一个文件句柄或文件描述符供读、写操作,还要绑定地址和**端口,客户端则只需要创建套接字后,直接使用connect函数向服务端套接字发起连接请求即可。
5、块设备和字符设备
美国服务器块设备是硬件设备,通过随机访问固定大小的数据块来区分。固定大小的chunk称为块block。最常见的块设备是硬盘,但也存在许多其他块设备,如软盘驱动器、蓝光阅读器和闪存。注意,这些都是挂载文件系统的设备,文件系统就像是块设备的通用语言。
字符设备通过连续的流数据访问,一个字节接着一个字节。典型的字符设备是终端和键盘。区分块设备和字符设备最简单的方法是看数据访问的方式。能随机访问获取数据的是块设备,必须按字节顺序访问的是字符设备。
以上就是部分美国服务器Linux系统的文件类型介绍。关注美联科技,了解更多IDC资讯!
TAG:国外linux服务器