首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Solaris send()调用中检测断开的管道

在Solaris send()调用中检测断开的管道
EN

Stack Overflow用户
提问于 2010-02-05 14:42:27
回答 2查看 2.2K关注 0票数 1

在solaris中,如何检测send()调用中损坏的套接字?我不想使用信号。

我尝试过SO_NOSIGPIPE和MSG_NOSIGNAL,但两者在Solaris中都不可用,并且我的程序被“断开管道”错误终止。

有没有办法检测出管道破损?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-05 15:12:55

您必须使用sigaction()来明确忽略SIGPIPE信号:

代码语言:javascript
复制
struct sigaction act;

act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);

...then send()将返回-1,并将errno设置为EPIPE

票数 1
EN

Stack Overflow用户

发布于 2010-02-05 19:02:52

我猜在Solaris中你只有有限的选择。AFAIK,caf建议的sigaction似乎是最好的解决方案。

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

https://stackoverflow.com/questions/2205455

复制
相关文章

相似问题

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