码迷,mamicode.com
首页 > 系统相关 > 详细

Linux网络编程-SIGPIPE信号导致的程序退出问题

时间:2016-12-05 02:10:32      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:linux网络编程   signal   server   信号   pip   term   代码   linux   发送数据   

  当客户端close关闭连接时,若server端接着发送数据,根据TCP协议的规定,server端会收到RST响应,当server端再次往客户端发送数据时,系统会发出一个SIGPIPE信号给server进程,告诉server进程,对端连接已经关闭了,不要再写数据了。然而,根据信号的默认规则,SIGPIPE信号的默认处理动作是terminate(终止),所以server进程会结束。这样就造成了服务器因客服端的关闭而关闭。

  商业开发中,这种情况是不能被允许的。避免这种情况的方法是忽略SIGPIPE信号,即在代码中加上这样一句“signal(SIGPIPE,SIG_IGN)”。

Linux网络编程-SIGPIPE信号导致的程序退出问题

标签:linux网络编程   signal   server   信号   pip   term   代码   linux   发送数据   

原文地址:http://www.cnblogs.com/yongqiang/p/6132513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!