管道

管道

linux系统中,管道常用于进程间通信。常见的shell命令如ls | grep name中的|符号就是默认的管道,首先ls程序会将输出通过管道传给grep程序的输入。

管道的意义

两个fd作为A进程的数据对象,进程clone()或者fork()出B进程时,进程会复制初始进程的数据,从而B进程就可以访问两个fd。从而A和B之间就建立起了一种通信机制。

管道的原理

管道可以视为一种缓冲区,有着两个端点:写端和读端。数据只能从写端进入,从读端流出。创建管道时,系统会分配一个缓冲区,并为读写两端分配fd。

管道分类

匿名管道

匿名管道主要用于父子进程间进行通信。匿名管道通过pipe()创建,创建完成会生成一个pipefd数组,pipefd[0]代表读端,pipe[1]fd代表写端。

命名管道

命名管道主要用于非父子进程间进行通信。命名管道又称为FIFO(First in,First out),命名管道可以通过mkfifo命令或者mkfifo()系统调用进行创建。

posted @ 2025-02-11 00:14  LemHou  阅读(9)  评论(0)    收藏  举报