内存映射

为什么要进行进程间的通讯(IPC (Inter-process communication))

数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间
共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

linux常用的进程间的通讯方式

(1)、管道(pipe):管道可用于具有亲缘关系的进程间的通信,是一种半双工的方式,数据只能单向流动,允许一个进程和另一个与它有共同祖先的进程之间进行通信。

(2)、命名管道(named pipe):命名管道克服了管道没有名字的限制,同时除了具有管道的功能外(也是半双工),它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。

(3)、信号(signal):信号是比较复杂的通信方式,用于通知接收进程有某种事件发生了,除了进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。

(4)、消息队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺

(5)、共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。

(6)、内存映射:内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。

(7)、信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。

(8)、套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

转载于:https://www.cnblogs.com/jiangzhaowei/p/5558756.html

进程间的通讯(IPC)方式相关推荐

  1. python 进程间同步_python之路29 -- 多进程与进程同步(进程锁、信号量、事件)与进程间的通讯(队列和管道、生产者与消费者模型)与进程池...

    所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了.至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠 ...

  2. 进程间的通信IPC(无名管道和命名管道)

    进程间的通信IPC介绍 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息. IPC的方式通常有管道(包括无名管道和命名管道).消息队列.信号量 ...

  3. Android应用中通过AIDL机制实现进程间的通讯实例

    Android中,每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢?显然,Java中是不支持跨进程内存共享的,因此要传递对象,需要把对象解析成操作系统能够理解的数据格式,以达 ...

  4. python实现进程通信_python进程间的通讯实现

    1:进程间通讯的方法:apply_async()非阻塞式通讯     apply()阻塞式通讯 2:使用Queue实现对Process创建的进程间通讯, Queue本身是一个消息队列程序,Queue常 ...

  5. MFC:通过代码简单理解进程间的通讯机制——共享内存

    下面用共享映射文件的方式实现进程间通信,代码可以运行. 一.浅理解 每个进程有自己独立的空间,一个进程无法访问其他进程的数据.就好像两个是互不干涉的个体,想让它们进行通信(交换数据),就必须有一段它们 ...

  6. android aidl进程间的通讯(笔记)

    aidl: Android Interface definition language的缩写(Android接口描述语言),是为了让app间可以进行一个数据通讯的技术. 使用步骤: 1.在APP A中 ...

  7. 进程间通讯(IPC)(有信号捕捉函数)

    1.IPC(Internal Processes Communication) 进程间通讯--->实际上数据的交换. 通过全局变量的方式实现不了进程间通讯 因为进程内存空间,都是相互独立的,不能 ...

  8. Linux 进程间通讯详解一

    进程间的通讯 两台主机间的进程通讯 --socket一台主机间的进程通讯 --管道(匿名管道,有名管道) --System V进程间通信(IPC)包括System V消息队列,System V信号量, ...

  9. WIN32 进程间通讯-共享内存

    一.引言     在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换 ...

最新文章

  1. python跨行字符串 变量_在Python中有没有在多行字符串中使用变量的方法?
  2. 有必要做 Code Review 吗???
  3. 一旦上了CRM系统 就期待短期见效?
  4. Python爬虫入门教程 21-100 网易云课堂课程数据抓取
  5. python入门作业编程题-Python编程:从入门到实践——【作业】——第六章(字典)...
  6. python dict常用操作
  7. SpringBoot maven打包源码发布到仓库配置
  8. RocketMQ初步应用架构理论
  9. 【数字图像处理】Canny边缘检测详解及编程实现
  10. CSS中可以让文字在水平和垂直方向上重叠的两个属性
  11. 深度学习自动调参工具,NNI使用
  12. 本地语音控制模块 | 带语音识别的智能家居方案
  13. 切图具体需要切什么内容_什么是切图?网页制作中的切图是什么?
  14. 关于本机及网络无法连接SQLEXPRESS的解决办法
  15. Linux chrome/firefox flash过期问题解决办法
  16. 2021秋软工实践第一次个人编程作业
  17. 使用Linux命令cURL实现文件定时上传到ftp服务器的程序
  18. LeetCode常用算法模式大厂面试题整理
  19. 数据分析 — 用户粘性的两个计算指标(DAU/MAU和月人均活跃天数)
  20. HTML5期末大作业:茶页文化网站设计——气高端企业自适应响应式网站模板(6个页面) HTML+CSS+JavaScript

热门文章

  1. mysql日期条件如何应用_MySQL如何使用时间作为判断条件
  2. 重复次数最多的 子串_每日算法系列【LeetCode 424】替换后的最长重复字符
  3. MS_DOS头部 IMAGE_DOS_HEADER
  4. 导出配置_Lua配置表导出优化
  5. 160 - 50 DueList.5
  6. 《dp补卡——子序列问题》
  7. 实验四 Windows程序设计
  8. HDU 1402——A * B Problem Plus
  9. C++ 菱形虚继承 通过指针来寻找继承过来的成员变量
  10. C++ 使用extern C简单使用