美文网首页
2019-07-07 进程之间的五种通信方式

2019-07-07 进程之间的五种通信方式

作者: 北子萌 | 来源:发表于2019-07-09 14:32 被阅读0次

一、管道

特点:半双工,具有固定的读端和写端

只能用于具有亲缘关系的进程之间的通信,它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。

一个管道建立的时候有fd[0]和fd[1],前者为读而打开,后者为写打开

二、FIFO

FIFO,也称为命名管道,它是一种文件类型。

特点

FIFO可以在无关的进程之间交换数据,与无名管道不同。

FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。

三、消息队列

消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。

特点

消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。

消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。

消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。

四、信号量

信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。

特点

信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。

信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。

每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数。

支持信号量组。

原型

最简单的信号量是只能取 0 和 1 的变量,这也是信号量最常见的一种形式,叫做二值信号量(Binary Semaphore)。而可以取多个正整数的信号量被称为通用信号量。

Linux 下的信号量函数都是在通用的信号量数组上进行操作,而不是在一个单一的二值信号量上进行操作。

五、共享内存

共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区。

特点

共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。

因为多个进程可以同时操作,所以需要进行同步。

信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。

相关文章

  • 操作系统拾遗--进程同步、互斥

    进程通信 进程通信--进程之间的信息交换,如同步、互斥。 进程通信分为: 低级通信方式:同步与互斥 高级通信方式:...

  • Socket 通信之 UDP 通信

    前段时间,我们在这篇文章中谈到了多进程和进程之间的通信方式,主要谈到了本地进程之间使用队列(Queue)进程通信,...

  • 进程间通信、互斥、同步

    进程通信 概念:进程通信是指进程之间的信息交换,进程是分配系统资源的单位三种方式:共享存储、管道通信、消息传递 共...

  • 第二章 进程的描述与控制5

    2.6 进程通信 1、进程通信是指进程之间的信息交换。 2、进程通信分为: 1)低级通信——进程之间的互斥和同步 ...

  • 软件测试项目实战 技术、流程与管理 笔记

    一操作系统知识 1.线程和进程的区别(4点)2.线程之间通信的基本方式(2种)3.进程之间的通信的基本方式(4种)...

  • 进程之间的通信方式

    进程之间的通信方式有: 1、管道 2、消息队列 3、共享内存 4、信号量 5、Socket 1、管道 我们来看一条...

  • ssl

    进程之间的通信 同主机之间进程通信ipc shm 不同主机之间进程通信socket 主机port作用 主机上,每一...

  • 2019-07-07 进程之间的五种通信方式

    一、管道 特点:半双工,具有固定的读端和写端 只能用于具有亲缘关系的进程之间的通信,它可以看成是一种特殊的文件,对...

  • .Net 设计模式

    C#进程之间的通信 a.使用SendMessage向另一进程发送WM_KEYDOWN消息 1.进程之间的通讯方式:...

  • 8-electron 主进程与渲染进程之间的通信(同步通信、异步

    electron 主进程与渲染进程之间的通信(同步通信、异步通信) electron 主进程和渲染进程通信 ele...

网友评论

      本文标题:2019-07-07 进程之间的五种通信方式

      本文链接:https://www.haomeiwen.com/subject/srzvhctx.html