0
点赞
收藏
分享

微信扫一扫

通道(pipe)学习笔记

闲云困兽 2022-02-14 阅读 55
linux

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 条评论