linux管道、EPIPE 和 SIGPIPE 的关系

本文通过实验探讨了Linux管道中,当写端或读端关闭时,程序的行为及errno和SIGPIPE信号的关系。实验发现,关闭写端后向管道写入数据会导致errno设置为EPIPE,触发SIGPIPE信号;而关闭读端时,尝试写入不会立即导致SIGPIPE,但写入时errno也会设为EPIPE。解决方案包括忽略SIGPIPE信号或在检测到EPIPE时关闭写端。
摘要由CSDN通过智能技术生成

试验目的:


1、向管道写端写入数据前,关闭管道写端fd,errno值会是什么?

2、向管道写端写入数据后,关闭管道写端fd,从管道读端读取数据时,是否能正常读取数据?

3、向管道写端写入数据后,关闭管道读端fd,从管道读端读取数据时,会发生什么?errno是什么?

4、向管道写端写入输入前,关闭管道读端fd,是否会触发SIGPIPE信号?程序如何不崩溃?errno值是否会为EPIPE?


正常代码流程:

1、创建一个管道pipefd[2]

2、向管道写端pipefd[1]写入数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值