Linux进程间的通信方式
Posted lgxblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux进程间的通信方式相关的知识,希望对你有一定的参考价值。
管道
管道是Linux支持的最草的IPC(进程间通信)方式,可以分为有名管道和无名管道
无名管道
1. 管道是半双工,只能支持单向流动,两个进程需要建立两个通道来进行通信
2. 无名管道通过pipe()函数创建,只能用于父子进程或者兄弟进程之间
3. 一个进程向管道中写数据,加入到管道缓冲区的尾部,另一个进程读的时候从缓冲区的头部读取
有名管道
有名管道也是半双工,但是它允许任何两个进程之间的通信,有名管道提供一个路径名与之进行关联,以FIFO的方式存在于文件系统中
信号量
提到信号量,就能想到P/V操作,也就是wait()和sinal()操作。信号量是一种计数器,可以控制进程间多个线程或者多个进程之间对共享资源的访问,实现为一种锁的机制。
信号
操作系统可以根据信号的不同来进行不同的处理方式,采用默认的处理方式,即进程中断或退出 ,也可以采用另一种机制,即忽略该信号,另外的就是自定义处理函数,执行相应的操作
消息队列
消息队列是一种链表的形式,允许一个或这多个进程来写数据,一个或多个进程进行读数据,
共享内存
共享内存映射为一段可以被其他进程访问的内存。该内存被一个进程所创建,然后其他进程可以挂载到该共享内存中。,共享内存是最快的进程间通信方式,但是不支持并发控制,所以通常配合信号量机制实现进程间的通信
socket
socket也是一种进程间的通信方式,但与其他方式不同的是该方式可以实现不同的主机之间的通信
以上是关于Linux进程间的通信方式的主要内容,如果未能解决你的问题,请参考以下文章