进程间通信的方式有哪些?各自的优缺点及应用选择?

现在最常用的进程间通信的方式有信号、信息量、消息队列、共享内存等。

百度经验有介绍8种 无名管道(pipe),高级管道(popen)、有名管道(nemed pipe)、消息队列(message queue)、信号量(semophore)、信号(sinal)、共享内存(shared memory)、套接字(socket)。

 

--》管道、有名管道

管道是单向的,先进先出,提供了简单的流控制,进程读空管道或者写满管道,都将造成进程阻塞

管道包括无名管道和有名管道,前者用于父子间进程通信,后者用于任意两个进程间通信

--》信号

信号产生的条件:按键、硬件异常、进程调用kill函数将信号发送给另一个进程、用户调用kill命令将信号发送给其他进程,传递的消息比较少,主要是通知消息

--》消息队列

一个消息链表,可以把消息看作一个记录,具有特定的格式,进程可以向队列中添加消息或者读走消息,有缓冲区

--》共享内存

共享内存就是映射一段可以被其他进程访问的内存,这段共享物理内存由一个进程创建,但是多个进程都可以访问,共享内存是进程间共享数据的一种最快的方法

--》信号量

主要用于保护临界资源,进程可以根据它来判断是否能够访问某些公共资源,除了用于反复问控制外,还可以用于进程同步,相当于计数器

--》套接字

可以用于不同进程间的通信。

流式套接字:提供可靠的,面向连接的通讯流

数据包套接字:定义一种无连接的服务,通过相互独立的报文进行传输,是无序的

原始套接字:用于新的网络协议的测试

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
进程间通信有多种方式,其中包括管道、有名管道、套接字和信号量。管道是一种半双工的通信方式,只能在具有亲缘关系的进程间使用,常用于两个不同进程之间的通信。有名管道也是一种半双工的通信方式,但它允许无亲缘关系进程间的通信。套接字是一种进程间通信的方法,可以用于网络通信,也可以用于同一台计算机上的进程间通信。信号量是一种计数器,用于控制多个线程对共享资源的访问,主要作为进程间以及同一个进程内不同线程之间的同步手段。这些方式可以根据具体的需求和场景来选择使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【操作系统】进程间通信的五种方式](https://blog.csdn.net/qq_41358574/article/details/119740104)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [9.进程间通信方式有哪些?各自的优缺点应用选择?](https://blog.csdn.net/xiaonan153/article/details/81502245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值