我写socket相关的程序也不是一天两天了,在我的记忆中,只要处理好recv(或read)的返回值中<0,==0,>0三种情况,程序便不会有什么问题.但最近在看公司的源代码时,发现代码中直接将SIGPIPE设置为SIG_IGN.而且附上一段注释:往一个已经关闭的socket写入数据会触发SIGPIPE.我心中顿时一惊,我以前从来没这样做过,虽然没出问题,难道只是我运气好? 周末,决定验证一下. 首先,socket的读事件中,返回0表示socket已关闭.如果已经关闭,再往里面写东西肯定会出问题…