当服务器close一个连接时,若客户端接着发数据,根据TCP协议的规定,
客户端会收到一个RST响应,
客户端再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。
根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以客户端会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN。 如: signal(SIGPIPE,SIG_IGN); 这时,SIGPIPE交给了系统处理,而不是会导致客户端直接退出。
阅读(1277) | 评论(0) | 转发(0) |