1 进程间通信的几种方法-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

进程间通信的几种方法

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-21 11:32 次阅读

1、管道和 FIFO

管道是 UNIX 系统上最古老的 IPC 方法,它在 1970 年 UNIX 的第三个版本上就出现了。把一个进程连接到另一个进程的数据流称为管道,管道被抽象成一个文件。

管道包括三种:

普通管道 pipe:通常有两种限制,一是单工,数据只能单向传输;二是只能在父子或者兄弟进程间使用;

流管道 s_pipe:去除了普通管道的第一种限制,为半双工,可以双向传输;只能在父子或兄弟进程间使用;

有名管道 name_pipe(FIFO):去除了普通管道的第二种限制,并且允许在不相关(不是父子或兄弟关系)的进程间进行通讯。

2、信号

信号用于通知接收信号的进程有某种事件发生,所以可用于进程间通信;除了用于进程间通信之外,进程还可以发送信号给进程本身。

3、消息队列

消息队列是消息的链表,存放在内核中并由消息队列标识符标识,消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺陷。消息队列包括 POSIX 消息队列和 System V 消息队列。

消息队列是 UNIX 下不同进程之间实现共享资源的一种机制,UNIX 允许不同进程将格式化的数据流以消息队列形式发送给任意进程,有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。

4、信号量

信号量是一个计数器,与其它进程间通信方式不大相同,它主要用于控制多个进程间或一个进程内的多个线程间对共享资源的访问,相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志,除了用于共享资源的访问控制外,还可用于进程同步。

它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源,因此,主要作为进程间以及同一个进程内不同线程之间的同步手段。Linux 提供了一组精心设计的信号量接口来对信号量进行操作,它们声明在头文件 sys/sem.h 中。

5、共享内存

共享内存就是映射一段能被其它进程所访问的内存,这段共享内存由一个进程创建,但其它的多个进程都可以访问,使得多个进程可以访问同一块内存空间。

共享内存是最快的 IPC 方式,它是针对其它进程间通信方式运行效率低而专门设计的,它往往与其它通信机制,譬如结合信号量来使用,以实现进程间的同步和通信。

6、套接字(Socket)

Socket 是一种 IPC 方法,是基于网络的 IPC 方法,允许位于同一主机(计算机)或使用网络连接起来的不同主机上的应用程序之间交换数据,说白了就是网络通信

在一个典型的客户端/服务器场景中,应用程序使用 socket 进行通信的方式如下:

各个应用程序创建一个 socket。socket 是一个允许通信的“设备”,两个应用程序都需要用到它。

服务器将自己的 socket 绑定到一个众所周知的地址上使得客户端能够定位到它的位置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209317
  • 进程间通信
    +关注

    关注

    0

    文章

    16

    浏览量

    2434
收藏 人收藏

    评论

    相关推荐

    Linux下进程通信方式-管道

    Linux下进程通信方式-管道分享到: 本文关键字: linux 管道通信,linux 进程通信
    发表于 08-29 15:29

    Linux下进程通信

    华清远见嵌入式linux学习资料《Linux下进程通信》,通过前面的学习,读者已经知道了进程是一个程序的一次执行,是系统资源分配的最小单元。这里所说的
    发表于 09-04 10:07

    常用的进程通信主要有哪几种方式

    ;常用的进程通信主要有以下几种方式:1.消息队列;2. socket(本地socket和INETsocket)3.管道(有名管道和无名管道)4.信号5.共享内存以上5中方式,...
    发表于 11-08 07:38

    进程通信的方式有哪些?

    进程通信的方式有哪些?
    发表于 12-24 06:46

    进程几种状态?

    文章目录操作系统进程和线程什么是进程?什么是线程?进程和线程有什么区别?何时使用多进程,何时使用多线程?进程
    发表于 12-24 07:16

    抖动测量的几种方法

    抖动测量的几种方法 测试抖动常用在测试数据通信IC或测试电信网络中。抖动是应该呈现的数字信号沿与实际存在
    发表于 08-17 13:02 3106次阅读

    关于实时操作系统中任务通信的一种方法

    关于实时操作系统中任务通信的一种方法
    发表于 09-03 11:45 3次下载
    关于实时操作系统中任务<b class='flag-5'>间</b><b class='flag-5'>通信</b>的一<b class='flag-5'>种方法</b>

    进程与线程通信方式

    进程通信则不同,它的数据空间的独立性决定了它的通信相对比较复杂,需要通过操作系统。以前进程
    的头像 发表于 04-09 15:58 8916次阅读
    <b class='flag-5'>进程</b><b class='flag-5'>间</b>与线程<b class='flag-5'>间</b>的<b class='flag-5'>通信</b>方式

    干货:计算fibnacci 级数的几种方法

    干货:计算fibnacci 级数的几种方法
    的头像 发表于 06-22 11:23 2414次阅读
    干货:计算fibnacci 级数的<b class='flag-5'>几种方法</b>

    使用MQTT作为进程通信的方式

    小编对Linux这一块的实际开发经验虽然还不是很足,但也知道进程通信有那么几种方式:管道、消息队列、共享内存、套接字等。
    的头像 发表于 10-22 12:09 6159次阅读
    使用MQTT作为<b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>的方式

    Linux进程通信方法之管道

    上文中我们介绍了进程通信方法之一:信号,本文将继续介绍另一种进程
    的头像 发表于 05-14 15:47 1952次阅读
    Linux<b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b><b class='flag-5'>方法</b>之管道

    进程通信的机制有哪些

    进程通信(interprocess communication,简称IPC)指两个进程之间的通信。系统中的每一个
    的头像 发表于 07-21 11:23 924次阅读
    <b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>的机制有哪些

    常见的进程通信方式

    进程通信 如果两个进程,想要知道对方在干嘛,或者进行协调运行,就需要进程
    的头像 发表于 10-08 15:48 1338次阅读
    常见的<b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>方式

    进程通信方式总结

    进程通信(IPC): 进程通信的方式有很多,这里主要讲到
    的头像 发表于 11-09 09:25 749次阅读
    <b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>方式总结

    进程通信的原理

    一.为什么进程需要通信? 1).数据传输 一个进程需要将它的数据发送给另一个进程; 2).资源共享 多个
    的头像 发表于 11-10 17:05 1113次阅读
    <b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>的原理