Linux下socket编程,若远端的socket异常中断,调用send函数会导致异常,并退出程序。
原因
Linux下socket编程,
若网络异常,系统会触发一个底层信号SIGPIPE,
如果没有函数接口处理这个信号的话,就会导致程序异常并退出。
解决办法
禁用此信号,调用send的时候,使用MSG_NOSIGNAL标志。
1 | if (send(conn_socket, send_buffer, (strlen(send_buffer) + 1), MSG_NOSIGNAL) < 1) |