(10)进程间的通信

本文深入探讨了Linux中的两种进程间通信(IPC)机制:管道(包括无名管道和有名管道)及其工作原理、使用方法和限制。此外,还介绍了SystemVIPC中的消息队列、信号量和共享内存,阐述了它们在进程间同步和数据交换中的作用。通过对这些IPC机制的理解,读者能够更好地掌握Linux系统中的多进程通信方式。
摘要由CSDN通过智能技术生成

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值