无名管道和有名管道区别

①管道(无名管道)
 
(1)管道通信的原理:内核维护的一块内存,有读端和写端(管道是单向通信的)
(2)管道通信的方法:父进程创建管理后fork子进程,子进程继承父进程的管道fd
(3)管道通信的限制:只能在父子进程间通信、半双工
(4)管道通信的函数:pipe、write、read、close


 ②有名管道(fifo)
(1)有名管道的原理:实质也是内核维护的一块内存,表现形式为一个有名字的文件
(2)有名管道的使用方法:固定一个文件名,2个进程分别使用mkfifo创建fifo文件,然后分别open打开获取到fd,然后一个读一个写
(3)管道通信限制:半双工(注意不限父子进程,任意2个进程都可)

(4)管道通信的函数:mkfifo、open、write、read、close

一、无名管道

pipe的函数原型:int pipe(int pipefd[2]);

功能:经由参数pipefd返回两个文件描述符  ( pipefd[2] 有两个文件描述符组成: pipefd[0]和pipefd[1] )

pipefd[0] 用于从管道读数据, pipefd[1] 用于往管道写数据

返回值:管道创建成功返回0,失败返回-1;


下面是例子:子进程往管道写数据,父进程从管道读取该数据



二、有名管道

下面是例子,实现一个进程创建有名管道,然后开打,接着是一直循环读取管道中的内容; 另一个进程往该有名管道中写入数据。

①读管道example:


②写管道example

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值