进程间通信方式有哪些?各自有哪些优缺点?
进程间通信方式有哪些?各自有哪些优缺点?
1)管道
管道分为有名管道和无名管道
无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。
有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信。
2)信号量
信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交换大批数据,而用于多线程之间的同步.它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源.因此,主要作为进程间以及同一个进程内不同线程之间的同步手段.
3)信号
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生.
4)消息队列
消息队列是消息的链表,存放在内核中并由消息队列标识符标识.消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点.消息队列是UNIX下不同进程之间可实现共享资源的一种机制,UNIX允许不同进程将格式化的数据流以消息队列形式发送给任意进程.对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制.通过使用消息类型,进程可以按任何顺序读信息,或为消息安排优先级顺序.
5)共享内存
共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信.
6)套接字:可用于不同及其间的进程通信
进程间通信方式有哪些?各自有哪些优缺点?相关推荐
- 进程间通信方式有哪些?有何优缺点?
(1)管道 管道分为无名管道和有名管道. 无名管道 无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,进程的亲缘关系一般指的是父子关系.无名管道一般用于两个不同进 ...
- 【Linux】 ——进程间通信方式优缺点比较
进程间通信方式 @[TOC](进程间通信方式) 1.管道 2.消息队列 3.共享内存 4.信号量 5.Socket 1.管道 1.1 匿名管道 主要用于有亲缘关系的进程间通信 我们先来看一条Linux ...
- [【转载】 linux进程间通信方式
目录 目录 进程通信的目的 Linux 进程间通信(IPC)的发展 linux使用的进程间通信方式 管道( pipe ) 信号量( semophore ) 消息队列( message queue ) ...
- 进程间通信方式——管道
进程间通信 1.进程间通信概念及方式 2.管道 2.1 管道概念 2.2 管道的原理 2.3 管道的局限性 2.4 管道的优缺点 3.管道创建与应用 3.1 pipe函数创建并打开 3.2 程序实现 ...
- dat关闭某进程_超详细解析!工程师必会的Linux进程间通信方式和原理
▍进程的概念 · 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放.可以认为进程是一个程序的一次执行过程. ▍进程通信的概念 · 进 ...
- 两个不同的进程 虚拟地址相同_记一次阿里面试题:都有哪些进程间通信方式?麻烦你不要再背了...
1 管道 学习软件工程规范的时候,我们知道瀑布模型,在整个项目开发过程分为多个阶段,上一阶段的输出作为下一阶段的输入.各个阶段的具体内容如下图所示 最初我们在学习Linux基本命令使用的时候,我们经常 ...
- 记一次阿里面试题:都有哪些进程间通信方式?麻烦你不要再背了
1 管道 学习软件工程规范的时候,我们知道瀑布模型,在整个项目开发过程分为多个阶段,上一阶段的输出作为下一阶段的输入.各个阶段的具体内容如下图所示 最初我们在学习Linux基本命令使用的时候,我们经常 ...
- IPC 进程间通信方式——管道
进程间通信概述 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间 共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到. 通知时间: ...
- 进程间通信方式有哪些-Linux进程间通信
进程间通信:(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息: 进程间的通信方式: 管道(包括无名管道和命名管道).消息队列.信号量.共享内存.套接口. ...
- Android——进程间通信方式
0. 前置知识 其实android中追根溯源只有两种进程间通信方式,其他的方式都是通过封装这两种方式而得到的: Binder与Socket Android--Binder机制. Android中Soc ...
最新文章
- 64 大小_电脑系统32位和64位有什么区别
- 开发工作和测试工作不能由同一部分人来完成。如果开发人员对程序的功能要求理解错了,就很容易按照错误的思路来设计测试用例。如果开发人员同时完成测试工作,那么测试工作就很难取得成功。
- 【软件架构】三层架构和MVC的比较
- shell获取执行脚本路径
- Hibernate5-1对多(1:n)-级联删除-cascade=delete-orphanl
- 机器学习模型_如何口述机器学习模型原理
- JSTL中的Core标签库
- 30种应该知道的sql调优方法
- 开启 C++ 生活 -- 第一个 C++ 程序
- IT认证之架构师认证
- ABB伺服驱动调试(四)
- 唱响艾泽拉斯_战争篇
- Unity的协程详解
- 足够的需求,总归有蹒跚的第一步—“Holle,world!”
- feishu-飞书api
- java基础编程学习-1
- gensim.corpora中Dictionaryd的用法
- java实现鸭子类型_面向对象—多态、鸭子类型(Day21)
- Splunk 会议回顾: 大数据的关键是机器学习
- 了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形
热门文章
- A goal-driven tree-structured neural model for math word problems论文阅读
- MTSP问题遗传算法解决及其代码与案例
- 阿里云服务器使用https访问项目
- android root 的作用,安卓手机Root好不好?手机Root后有什么好处和影响?
- 前馈电容的作用-DCDC
- Office2016下Excel饼图和Visio饼图绘制的几个小技巧(饼图分离、颜色逐块编辑、扇形区起始角度指定等)
- 百度地图api之路线规划
- 金士顿2G U盘 3S6677 量产工具
- 论文阅读:Neural Motifs: Scene Graph Parsing with Global Context
- C语言--求一元二次方程的根(分支)