进程间通信方式(简)

进程间的通讯方式

进程间通讯,即进程之间传播或者交换信息。在系统中,进程的用户空间都是相对独立的,一般来说不能相互访问,要实现进程之间的通信,总体上,有以下几种方式:

  • 管道 ( pipe )
  • 系统IPC ( 消息队列、信号、共享传输)
  • 套接字 ( Socket )

管道

普通管道(pipe)
数据只能单向传输
只能在有亲缘关系的进程间使用
可以看作一种只存在于内存中的特殊的文件 允许通过普通的 write()、read() 等函数来读写
流管道 (s_pipe)
在普通管道的基础之上 允许双向传输
命名管道(name_pipe)
能在不相关进程间通讯 但是不能双向传输
以 FIFO 的方式存在于文件系统中
总是以 first in first out 的方式进行数据读取

系统IPC

信号
生命周期-生成与传送
信号到来到进程对信号处理之间 信号在进程上挂起
内核为进程生产信号来响应不同的事件 并用一个字来代表信号 每个信号占一位 因此一个字的位数就是系统可以支持的最多信号种类数
信号没有固定的优先级
消息队列 - 消息的链表
存放在内核中 并由消息队列标识符表示
克服了信号传递信息少
管道只能承载无格式字节流以及缓冲区大小受限等特点
共享内存 - 映射一段能被其他进程访问的内存
由一个进程创建
是最快的IPC通信方式 针对其他进程间通信方式运行效率低二设计 可与其他通信机制配合使用

套接字(Socket)

可用于不同进程及其间进程的通信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值