进程间通信方式有哪些?各自有哪些优缺点?

1)管道

管道分为有名管道和无名管道

无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。

有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信。

2)信号量

信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交换大批数据,而用于多线程之间的同步.它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源.因此,主要作为进程间以及同一个进程内不同线程之间的同步手段.

3)信号

信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生.

4)消息队列

消息队列是消息的链表,存放在内核中并由消息队列标识符标识.消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点.消息队列是UNIX下不同进程之间可实现共享资源的一种机制,UNIX允许不同进程将格式化的数据流以消息队列形式发送给任意进程.对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制.通过使用消息类型,进程可以按任何顺序读信息,或为消息安排优先级顺序.

5)共享内存

共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信.

6)套接字:可用于不同及其间的进程通信

进程间通信方式有哪些?各自有哪些优缺点?相关推荐

  1. 进程间通信方式有哪些?有何优缺点?

    (1)管道  管道分为无名管道和有名管道. 无名管道 无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,进程的亲缘关系一般指的是父子关系.无名管道一般用于两个不同进 ...

  2. 【Linux】 ——进程间通信方式优缺点比较

    进程间通信方式 @[TOC](进程间通信方式) 1.管道 2.消息队列 3.共享内存 4.信号量 5.Socket 1.管道 1.1 匿名管道 主要用于有亲缘关系的进程间通信 我们先来看一条Linux ...

  3. [【转载】 linux进程间通信方式

    目录 目录 进程通信的目的 Linux 进程间通信(IPC)的发展 linux使用的进程间通信方式 管道( pipe ) 信号量( semophore ) 消息队列( message queue ) ...

  4. 进程间通信方式——管道

    进程间通信 1.进程间通信概念及方式 2.管道 2.1 管道概念 2.2 管道的原理 2.3 管道的局限性 2.4 管道的优缺点 3.管道创建与应用 3.1 pipe函数创建并打开 3.2 程序实现 ...

  5. dat关闭某进程_超详细解析!工程师必会的Linux进程间通信方式和原理

    ▍进程的概念 · 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放.可以认为进程是一个程序的一次执行过程. ▍进程通信的概念 · 进 ...

  6. 两个不同的进程 虚拟地址相同_记一次阿里面试题:都有哪些进程间通信方式?麻烦你不要再背了...

    1 管道 学习软件工程规范的时候,我们知道瀑布模型,在整个项目开发过程分为多个阶段,上一阶段的输出作为下一阶段的输入.各个阶段的具体内容如下图所示 最初我们在学习Linux基本命令使用的时候,我们经常 ...

  7. 记一次阿里面试题:都有哪些进程间通信方式?麻烦你不要再背了

    1 管道 学习软件工程规范的时候,我们知道瀑布模型,在整个项目开发过程分为多个阶段,上一阶段的输出作为下一阶段的输入.各个阶段的具体内容如下图所示 最初我们在学习Linux基本命令使用的时候,我们经常 ...

  8. IPC 进程间通信方式——管道

    进程间通信概述 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间 共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到. 通知时间: ...

  9. 进程间通信方式有哪些-Linux进程间通信

    进程间通信:(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息: 进程间的通信方式: 管道(包括无名管道和命名管道).消息队列.信号量.共享内存.套接口. ...

  10. Android——进程间通信方式

    0. 前置知识 其实android中追根溯源只有两种进程间通信方式,其他的方式都是通过封装这两种方式而得到的: Binder与Socket Android--Binder机制. Android中Soc ...

最新文章

  1. 64 大小_电脑系统32位和64位有什么区别
  2. 开发工作和测试工作不能由同一部分人来完成。如果开发人员对程序的功能要求理解错了,就很容易按照错误的思路来设计测试用例。如果开发人员同时完成测试工作,那么测试工作就很难取得成功。
  3. 【软件架构】三层架构和MVC的比较
  4. shell获取执行脚本路径
  5. Hibernate5-1对多(1:n)-级联删除-cascade=delete-orphanl
  6. 机器学习模型_如何口述机器学习模型原理
  7. JSTL中的Core标签库
  8. 30种应该知道的sql调优方法
  9. 开启 C++ 生活 -- 第一个 C++ 程序
  10. IT认证之架构师认证
  11. ABB伺服驱动调试(四)
  12. 唱响艾泽拉斯_战争篇
  13. Unity的协程详解
  14. 足够的需求,总归有蹒跚的第一步—“Holle,world!”
  15. feishu-飞书api
  16. java基础编程学习-1
  17. gensim.corpora中Dictionaryd的用法
  18. java实现鸭子类型_面向对象—多态、鸭子类型(Day21)
  19. Splunk 会议回顾: 大数据的关键是机器学习
  20. 了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形

热门文章

  1. A goal-driven tree-structured neural model for math word problems论文阅读
  2. MTSP问题遗传算法解决及其代码与案例
  3. 阿里云服务器使用https访问项目
  4. android root 的作用,安卓手机Root好不好?手机Root后有什么好处和影响?
  5. 前馈电容的作用-DCDC
  6. Office2016下Excel饼图和Visio饼图绘制的几个小技巧(饼图分离、颜色逐块编辑、扇形区起始角度指定等)
  7. 百度地图api之路线规划
  8. 金士顿2G U盘 3S6677 量产工具
  9. 论文阅读:Neural Motifs: Scene Graph Parsing with Global Context
  10. C语言--求一元二次方程的根(分支)