请教下, 大家在写网络方面的程序时一般要处理哪些信号?怎么处理
时间:2010-08-26
来源:互联网
本帖最后由 aobai 于 2010-08-26 23:09 编辑
因为看别人的项目感觉他们对信号的处理很仔细。
而自己写相关的代码时很少考虑这方面的内容, 比如用了send() 函数发数据, 然后发现程序退出
了才想起没有忽略SIGPIPE信号, 我想应该一开始就对信号做必要的处理,而且最好能够全面些,养成好的习惯。
因为看别人的项目感觉他们对信号的处理很仔细。
而自己写相关的代码时很少考虑这方面的内容, 比如用了send() 函数发数据, 然后发现程序退出
了才想起没有忽略SIGPIPE信号, 我想应该一开始就对信号做必要的处理,而且最好能够全面些,养成好的习惯。
作者: aobai 发布时间: 2010-08-26
程序开始时忽略SIGPIPE
signal(SIGPIPE, SIG_IGN);
在accept、send、resv函数后如果发生错误,检查errno是否是EINTR,如果是则需要重试,如下所示
do
{
int ret = ::recv(m_fd, databuf,len, 0);
if (ret == 0) //connect broken
{
return EPIPE;
}
else if (ret < 0)
{
if (errno == EINTR) continue;
}
}while (ret > 0);
signal(SIGPIPE, SIG_IGN);
在accept、send、resv函数后如果发生错误,检查errno是否是EINTR,如果是则需要重试,如下所示
do
{
int ret = ::recv(m_fd, databuf,len, 0);
if (ret == 0) //connect broken
{
return EPIPE;
}
else if (ret < 0)
{
if (errno == EINTR) continue;
}
}while (ret > 0);
作者: osdba 发布时间: 2010-08-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28