首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >send( )问题

send( )问题
EN

Stack Overflow用户
提问于 2011-04-13 04:33:14
回答 4查看 311关注 0票数 2

当我使用web浏览器测试我的程序时,我可以很好地写入套接字/FD,所以我决定循环它,并在连接中途切断连接,然后我注意到了一个问题。当套接字不可用时,send()能够关闭整个程序。我认为问题在于这个程序陷入了一种进退两难的境地,并自我关闭了。因此,我将套接字设置为不阻塞。没有变化。你知道为什么会发生这种情况吗?

代码语言:javascript
复制
else if ( b->temp_socket_list[read].revents & POLLOUT ) {  
    printf ( "#Write#\n" );  
    char *done = "Done!";  
    int sent = send ( sock, done, 5, 0 );  
    printf ( "end\n", sent );  
}  
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-13 04:35:56

这可能是由于SIGPIPE信号的默认操作造成的。要忽略此信号,请使用以下命令:

代码语言:javascript
复制
signal(SIGPIPE, SIG_IGN);

然后,套接字错误将报告为套接字函数的返回值,而不是信号。

票数 5
EN

Stack Overflow用户

发布于 2011-04-13 04:35:50

作为忽略SIGPIPE的另一种选择,this post对如何避免它们有一些很好的答案。

票数 3
EN

Stack Overflow用户

发布于 2011-04-13 04:35:53

这是哪个平台?

在UNIX上,在某些情况下,当连接断开(SIGPIPE)时,您会收到一个信号,这将默认终止程序...解决方案是为SIGPIPE安装一个什么也不做的信号处理程序。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5641311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档