fifo与pipe总结

本文总结了FIFO(全双工)和Pipe(半双工)的通信特性。FIFO在没有对应读写进程时,打开操作会阻塞;只写打开会因无读进程而错误返回ENXIO。而Pipe是半双工,读端在写端关闭时,读取会返回0,表示写端已关闭;写端在无读端时,会触发SIGPIPE信号导致进程终止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fifo总结:全双工方式


第一 O_RDONLY O_WRONLY


  读端open(O_RDONLY…) 写端 open(O_WRONLY…), 只有读或只有写端时,open阻塞。验证,reader和writer    程序,只运行一个。
  写端关闭,只剩下读端时,read立即返回0.
  读端关闭,只剩下写端时,写端被SIGPIPE信号终止。
  

  在一般情况中(没有说明O_NONBLOCK),只读打开要阻塞到某个其他进程为写打开此FIFO。类似,为写而打开一个FIFO要阻塞到某个其他进程为读而打开它。


第二 O_NONBLOCK
  当打开一个FIFO时,非阻塞标志(O_NONBLOCK)产生下列影响:
  对于读端:如果指定了O_NONBLOCK,则只读打开立即返回。

  对于写端:但是,如果没有进程已经为读打开一个FIFO,那么,只写打开将出错返回,其errno是ENXIO:6号


   第三 O_RDWR
  读端和写端都是O_RDWR方式,两端都运行,若写端写完后退出了(输入quit)。则读端是以O_RDWR方式打开的,相
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值