Chinaunix
标题:
对一个对方已经关闭的连接调用send,程序崩溃
[打印本页]
作者:
yecheng_110
时间:
2007-10-31 15:56
标题:
对一个对方已经关闭的连接调用send,程序崩溃
对一个对方已经关闭的连接调用send,程序崩溃?
怎么知道对方已经关闭了
作者:
cugb_cat
时间:
2007-10-31 15:57
检查返回值,以及处理SIG_PIPE信号。
作者:
yecheng_110
时间:
2007-10-31 16:06
int senddata(int fd,char* data,int len)
{
char *p;
ssize_t res;
size_t i;
p = data;
for(i = 0;i < len;)
{
if((res = send(fd,p,1,0)) < 0)
{
if(errno== EINTR)
continue;
else
return -1;
}
if(res == 0)
{
break;
}
p++;
i++;
}
return i;
}
复制代码
和SIG_PIPE也有关系?
[
本帖最后由 yecheng_110 于 2007-10-31 16:07 编辑
]
作者:
converse
时间:
2007-10-31 16:13
汗,为啥要一次发送一个字节的数据?一次发送len长度不行吗?
作者:
yecheng_110
时间:
2007-10-31 16:17
标题:
回复 #4 converse 的帖子
我也不明白
参照一个开源软件这么做的
作者:
anthony1983
时间:
2007-10-31 16:45
SIG_PIPE默认处理是终止程序
屏蔽掉这个信号就可以了
作者:
converse
时间:
2007-10-31 16:47
加入MSG_NOSIGNAL标志看看,是忽略SIG_PIPE信号的.
作者:
yecheng_110
时间:
2007-10-31 16:53
标题:
回复#2 cugb_cat #6 anthony1983 #7 converse 的帖子
果真如此
多谢
[
本帖最后由 yecheng_110 于 2007-10-31 16:55 编辑
]
作者:
lanying_wzw
时间:
2007-10-31 17:55
写一个读端已经关闭的管道会产生SIGPIPE信号
作者:
findone
时间:
2007-11-01 13:30
标题:
回复 #4 converse 的帖子
好像在一些老的unix系统下必须一次发送一个字节
作者:
findone
时间:
2007-11-01 13:31
标题:
回复 #4 converse 的帖子
好像在一些老的unix系统下必须一次发送一个字节
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2