发现调用send函数时,如果远端的socket异常中断的时候,会导致send异常,并退出,这是不允许的。
原因是网络异常的时候,系统会触发一个底层信号SIGPIPE ,如果没有函数接口处理这个信号的话,就会导致程序异常退出。
解决办法,最简单的办法:禁用这个信号,也就是调用send的时候,使用MSG_NOSIGNAL标志,例如:
if (send(comm->comm_fd, DatInf, DatLen, MSG_NOSIGNAL) <= 0) {
printf("发送失败\r\n");
}