原因:
socket遇到错误时,默认将错误信息交给系统处理,而系统的处理办法一般是直接关闭整个应用,所以就会出现遇到错误程序直接关闭,比如客户端关闭,服务器还在给客户端发信息,就会出现发送失败,导致服务器也直接关闭的现象
解决办法:
把错误交给自己定义的函数处理
先定义一个函数
void Perr(int signum)
{
if(signum==SIGPIPE)
{
fprintf(stderr, "Port Error: %s\n", strerror(errno));
}
}
然后将错误移交给定义的函数处理
signal(SIGPIPE,Perr);
如果要让系统处理,则
signal(SIGPIPE,SIG_IGN);