进程间通信方式(一)通道(pipe)学习笔记

1.通道是什么?

通道是两个进程之间进行通信的一种方式,操作形式上是文件,本质上是内存缓冲区。

2.如何创建通道?

①使用命令行创建通道

1)创建匿名通道

shell命令中“|”可以形成进程间的匿名通道。前一个进程的输出可以被后一个进程读入。该方法只适用于本地具有亲缘关系的进程之间的通信。

2)创建命名通道

使用mkfifo或mknod命令创建。

mknod(2): create special/ordinary file - Linux man page

mkfifo(3) - Linux manual page

读空管道时,若写端未关闭,则读操作阻塞,否则返回0。

写满管道时,若读端未关闭,则写操作阻塞,否则进程被终止。

②在系统编程中创建通道

1)创建匿名通道

使用pipe函数可创建匿名通道,原型为:int pipe(int pipefd[2]),引用文件为<unistd.h>。

使用write函数和read函数可对管道进行写、读操作。

2)创建命名通道

使用mkfifo函数或者mknod系统调用可以创建命名通道。

3.通道优缺点

优点是简单。

缺点是容量小,速度慢。

4.参考资料

Linux 的进程间通信:管道 - 知乎

Linux中父子进程、兄弟子进程之间通信方式--匿名管道pipe(适用于有血缘关系的进程)_偕臧-CSDN博客_兄弟进程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值