ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【无标题】

2021-11-17 19:01:40  阅读:82  来源: 互联网

标签:队列 无标题 管道 消息 信号 进程 共享内存


关于在LINUX下的进程间通信学习

在Linux系统中我们总会遇到想要两个进程之间进行通信,我们该怎么去进行进程间的通信呢,在Linux下有以下几种通信方式,无名管道,有名管道,消息队列,信号,信号量,共享内存,内存映射文件,套接字等等;

1.管道(PIPE)

管道相当于是一片共享内存,一个进程创建一个管道时,被称为管道服务器,当一个进程往管道写入数据时,另一个进程就可以从管道读出来;
无名管道只能用于具有亲缘关系的进程进行通信,而有名管道可以利用与不同的进程,即使没有亲缘关系也能进行通信;

2.信号

在Linux中也有信号,信号的作用类似于中断,因为信号随时都可能会发生,无法确定它什么时候到来,它是进程间唯一的异步通信机制。
常见的信号有,按键,定时器,错误等信号;

3.信号量

信号量是用来解决进程/线程间的同步与互斥的一种通信机制(PV操作)
P相当于申请资源,V相当于释放资源

4.消息队列

消息队列主要包括:创建、打开消息队列,添加消息,读取消息,控制消息

消息队列是内核地址空间中的内部链表,通过linux内核在各个进程直接传递内容,消息顺序地发送到消息队列中,并以几种不同的方式从队列中获得,每个消息队列可以用 IPC标识符 唯一地进行识别
消息队列克服了信号承载信息量少,管道只能承载无格式字符流。

5.共享内存

共享内存的实现主要为两个步骤:1,,创建共享内存,shmget() 2,映射共享内存,把这段内存映射到具体的进程空间中 shmat();

标签:队列,无标题,管道,消息,信号,进程,共享内存
来源: https://blog.csdn.net/Dont__worry/article/details/121384707

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有