【study】SIGPIPE 信号

如果sever(client)socket已关闭,对等方再发写数据,则会产生SIGPIPE信号。

1.SIGPIPE信号会让进程终止(man 7 signal,阅读SIGPIPE默认ACT)

2.往一个已经接收FIN的套接中写是允许的,接收到FIN仅仅代表对方不再发送数据。

3. 在收到RST段之后,如果再调用write就会产生SIGPIPE信号,对于这个信号的处理我们通常忽略即可。

client:


kill调server,server进入半链接状态,client没有close 仍然可以继续写,此时linux内核会给子进程发信号,子进程退出。我们可以捕捉此信号,如上。

TCP/IP 的RST段重置

1)服务器端启动、客户端启动

2)服务器端先kill与客户端通讯的子进程,服务器端会给客户端发送FIN分节

此时:只代表服务器端不发送数据了,不能代表客户端不能往套接字中写数据。

3)如果子进程此时写数据给服务器端(解除屏幕阻塞,输入字符aaaa),

         将要导致TCP/IP协议重置,产生RST段;产生SIGPIPE信号。。

4)所以,一般情况下,需要我们处理SIGPIPE信号,忽略即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值