如何防止SIGPIPE(或妥善处理)我有一个小型服务器程序,它接受TCP或本地UNIX套接字上的连接,读取一个简单的命令,并根据命令发送答复。问题是,客户端有时可能对答案不感兴趣,并且提前退出,因此向该套接字写入将导致SIGPIPE并使我的服务器崩溃。防止坠机的最佳方法是什么?有没有办法检查另一边是否还在读?(select()在这里似乎不起作用,因为它总是说套接字是可写的)。或者我应该用一个处理程序捕获SIGPIPE并忽略它吗?
3 回答
www说
TA贡献1775条经验 获得超8个赞
SIGPIPE
SIGPIPE
SIG_IGN
SIGPIPE
SIGPIPE
signal(SIGPIPE, SIG_IGN);
send()
MSG_NOSIGNAL
SIGPIPE
MSG_NOSIGNAL
SO_SIGNOPIPE
setsockopt()
SIGPIPE
杨魅力
TA贡献1811条经验 获得超6个赞
int set = 1;setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int));
- 3 回答
- 0 关注
- 1923 浏览
添加回答
举报
0/150
提交
取消