如果在write调用期间对方关闭连接,视时间顺序的不同有以下几种情况:
1. 刚好在write调用之前对方关闭:
write返回失败,同时产生SIGPIPE。
2. write调用过程中对方关闭:
返回已写入的字节数,同时产生SIGPIPE。
SIGPIPE的默认行为是终止程序,所以一般来说我们需要catch之:
static void do_sig_pipe(int sig)
{
} your_function(...)
{
...
signal(SIGPIPE, do_sig_pipe);
...
}