一、linux的IPC机制1-管道
管道(无名管道)
(1)管道通信的原理:内核维护的一块内存,有读端和写端(管道是单向通信的)
(2)管道通信的方法:父进程创建管理后fork子进程,子进程继承父进程的管道fd
(3)管道通信的限制:只能在父子进程间通信
、半双工
(4)管道通信的函数:pipe、write、read、close
有名管道(fifo)
(1)有名管道的原理:实质也是内核维护的一块内存,表现形式为一个
有名字的文件
(2)有名管道的使用方法:固定一个文件名,2个进程分别使用mkfifo创建fifo文件,然后分别open打开获取到fd,然后一个读一个写
(3)管道通信限制:半双工(注意不限父子进程,任意2个进程都可)
(4)管道通信的函数:mkfifo、open、write、read、close
二、SystemV IPC介绍
SystemV IPC的基本特点
(1)系统通过一些专用API来提供SystemV IPC功能
(2)分为:信号量、消息队列、共享内存
(3)其实质也是内核提供的公共内存
1、消息队列
(1)本质上是一个队列,队列可以理解为(内核维护的一个)FIFO
(2)工作时A和B 2个进程进行通信,A向队列中放入消息,B从队列中读出消息。
2、信号量
作用:用于进程间的互斥和同步
(1)实质就是个计数器(其实就是一个可以用来计数的变量,可以理解为int a)
(2)通过计数值来提供互斥和同步
3、共享内存
作用:进程间大量数据的交换。
(1)大片内存直接映射
(2)类似于LCD显示时的显存用法
4、剩余的2类IPC
(1)信号
(2)Unix域套接字 socket