【Linux】进程间通信的几种方式总结

本文总结了Linux系统中进程间通信的几种方式,包括匿名管道、命名管道、System V进程间通信的共享内存、消息队列和信号量。详细阐述了每种方式的工作原理、代码实现及其应用场景。通过实例代码展示了如何利用这些通信方式进行进程间的交互,以加深理解。
摘要由CSDN通过智能技术生成

介绍与总结以下几种进程间通信方式:

管道:

  • 匿名管道
  • 命名管道

System V进程间通信

  • 共享内存
  • 消息队列
  • 信号量

管道:

半双工通信(可选方向的单向传输)。

本质内核中的一块缓冲区。

实现进程间通信的原理:让多个进程通过访问到相同的缓冲区来实现通信。管道实现通信使用的是系统调用的IO接口(这也遵循了一切皆文件的思想)。

1、匿名管道及代码实现

匿名管道只能用于具有亲缘关系的进程间通信(子进程通过复制父进程的文件描述符作为管道的操作句柄)

匿名管道的简单实现

首先我们要知道一个进程创建匿名管道,操作系统在内核中创建一块缓冲区,并返回两个文件描述符作为管道的操作句柄(一个用于读,一个用于写,方向的选择权交给用户),但是这个缓冲区在内核中没有标识,其它的进程找不到它,这也就是为什么匿名管道只能用于具有亲缘关系的进程间通信的原因了。这一步通过接口int pipe(int pipefd[2])来实现。

然后创建一个子进程,复制父进程的文件描述符,父进程完成写入操作,子进程进程读取操作,代码如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值