##Linux##进程间通信的方式

xiaoxiao2021-02-28  43

目的:

数据传输资源共享通知事件进程控制

通信分类

管道:

管道分为匿名管道和命名管道

匿名管道:创建无名管道int pipe(int fd[2]);         fd[0]---->表示读         fd[1]---->表示写

由fork()来共享管道原理父进程:关掉fd[1]               子进程:关掉fd[0]特点:        只能用于具有共同祖先的进程之间通信,一个管道由一个进程创建,该进程调用fork(),此后父子进程可以共享该管道。                   生命周期随进程                    提供流式服务                    半双工通信,数据只能向一个方向流动2、命名管道:在不相关的进程间交换数据创建方法:命令创建:mkfifo    filename                函数创建:int mkfifo(filename,mode)两种管道的区别:匿名管道由pipe创建并打开,命名管道由mkfifo创建,由open打开                            工作完成后,具有相同的意义

消息队列
具有四次系统调用提供一个从一个进程向另外一个进程发送一块数据的方法每个数据块都被认为是有一个类型,接收者接收的数据块类型可以不同系统消息队列总数具有上限(MSGMNI),每个消息的长度具有最大限度(MSGMAX)消息队列函数,及参数代表含义ipcs------->查看IPC资源     ipcrm-------->删除IPC资源
共享内存

特点:最快的进程间通信方式共享内存函数及参数代表含义

信号量

主要用于同步和互斥同步:多个进程相互配合完成一项工作互斥:各进程要求共享资源,有些资源要求互斥使用,进程间就会竞争这些资源,就叫进程间互斥。信号量与P,V操作:信号量:互斥:PV在同一个进程中    同步:PV在不同进程中信号量值得含义:

>0 表示可用资源数 =0 表示无资源可用 <0 表示等待队列中进程个数信号量的函数及其参数以上就是进程间通信的四种方法啦~
转载请注明原文地址: https://www.6miu.com/read-2625553.html

最新回复(0)