Linux进程全解12——lIPC机制之管道,SystemV IPC介绍

来源:互联网 发布:数据采集网络兼职 编辑:程序博客网 时间:2024/04/19 23:16

以下内容源于朱有鹏《物联网大讲堂》的课程学习整理,如有侵权,请告知删除。


一、管道

1、管道(无名管道)

(1)管道通信的原理:内核维护的一块内存,有读端和写端(管道是单向通信的);

(2)管道通信的方法:父进程创建管道后fork子进程,子进程继承父进程的管道fd。

(3)管道通信的限制:只能在父子进程间通信、半双工。

(4)管道通信的函数:pipe、write、read、close。

2、有名管道(fifo)

(1)有名管道的原理:实质也是内核维护的一块内存,表现形式为一个有名字的文件。

(2)有名管道的使用方法:固定一个文件名,2个进程分别使用mkfifo创建fifo文件,然后分别open打开获取到fd,然后一个读一个写。

(3)管道通信限制:半双工(注意不限父子进程,任意2个进程都可)。

(4)管道通信的函数:mkfifo、open、write、read、close


二、SystemV IPC介绍

1、SystemV IPC的基本特点

(1)系统通过一些专用API来提供SystemV IPC功能;

(2)包含:信号量、消息队列、共享内存;

(3)其实质也是内核提供的公共内存

2、消息队列

(1)本质上是一个队列,队列可以理解为(内核维护的一个)FIFO;

(2)工作时A和B2个进程进行通信,A向队列中放入消息,B从队列中读出消息。

3、信号量

(1)实质就是个计数器(其实就是一个可以用来计数的变量,可以理解为int a);

(2)通过计数值来提供互斥和同步。

4、共享内存

(1)大片内存直接映射;

(2)类似于LCD显示时的显存用法

5、剩余的2类IPC

(1)信号

(2)Unix域套接字:socket