linux进程间通讯的方式是什么-linux运维
linux进程间通讯的方式有:1、管道(包含匿名管道和命名管道);2、信号;3、新闻队列;4、同享内存;5、信号量;6、套接字。管道的本色是一个内核缓冲区,进程应用管道通报信息。
linux进程间通讯的方式:
(举荐学习:linux教程)
Linux进程间根本的通讯方式主要有:管道(pipe)(包含匿名管道和命名管道)、信号(signal)、新闻队列(queue)、同享内存、信号量和套接字。
下面离别介绍一下这几种方式:
1、管道
管道的本色是一个内核缓冲区,管道的作用正如其名,需要通讯的两个进程在管道的两端,进程应用管道通报信息。管道关于管道两端的进程而言,就是一个文件,但是这个文件比拼特别,它不属于文件系统而且只存在于内存中。
2、信号
信号是软件条理上对中止机制的一种模拟,是一种异步通讯方式,进程无须通过任何操纵来期待信号的抵达。信号可以在会员空间进程和内核之间直接交互,内核可以应用信号来通知会员空间的进程产生了哪些系统事件。
3、新闻队列
新闻队列是新闻的链表,拥有特定的格局,寄存在内存中并由新闻队列标识符标识,而且允许一个或多个进程向它写入与读取新闻
4、同享内存
使得多个进程可以可以直接读写统一块内存空间,是针对其他通讯机制运转效率较低而设计的。
为了在多个进程间交流信息,内核专门留出了一块内存区,可以由需要拜访的进程将其映照到本人的私有地址空间。进程就可以直接读写这一块内存而不需要进行数据的拷贝,从而大大提高效率。
注意:同享内存并未供给同步机制,在一个进程完毕对同享内存的写操纵以前,并无主动机制可以阻止另二个进程开端对它进行读取。所以,我们平常需要用其他的机制来同步对同享内存的拜访。
5、信号量
信号量本色上就是一个标识可用资源数目的计数器,它的值总是非负整数。而只要0和1两种取值的信号量叫做二进制信号量(或二值信号量),可用用来标识某个资源可否可用。
6、套接字
套接字是更为根基的进程间通讯机制,与其他方式不一样的是,套接字可用于不一样机器之间的进程间通讯。
有两品种型的套接字:基于文件的和面向网络的。
(1)Unix套接字是基于文件的,而且具有一个“家族名字”--AF_UNIX,它代表地址家族(address family):UNIX。
(2)第二类型的套接字是基于网络的,它也有本人的家族名字--AF_INET,代表地址家族(address family):INTERNET
无论采纳哪种地址家族,都有两种不一样的套接字连贯:面向连贯的和无连贯的。
(1)面向连贯的套接字(SOCK_STREAM)
进行通讯前必需创立一个连贯,面向连贯的通讯供给序列化的、牢靠地和不反复的数据交付,而没有记载边界。
这意味着每条信息可以被拆分成多个片段,而且每个片段都能确保抵达目的地,然后在目的地将信息拼接起来。
实现这种连贯类型的主要协定是传输控制协定(TCP)。
(2)无连贯的套接字(SOCK_DGRAM)
在通讯开端以前并不需要创立连贯,在数据传输历程中并没法保障它的次序性、牢靠性或反复性。
然而,数据报的确保留了记载边界,这就意味着新闻是以整体发送的,而并非第一分成多个片段。
因为面向连贯的套接字所供给的保障,因而它们的设定以及对虚拟电路连贯的保护需要批量的开销。然而,数据报不需要这些开销,即它的老本更加“低廉”。
实现这种连贯类型的主要协定是会员数据报协定(UDP)。
以上就是linux进程间通讯的方式是什么的细致内容,更多请关注 百分百源码网 其它相干文章!