检测 Solaris send() 调用中损坏的管道
在solaris中如何检测send()调用中损坏的套接字?我不想使用信号。
我尝试了 SO_NOSIGPIPE 和 MSG_NOSIGNAL 但两者在 Solaris 中都不可用,并且我的程序因“损坏的管道”错误而被终止。
有什么办法可以检测到管道破损吗?
谢谢!
In solaris how to detect broken socket in send() call? i dont want to use signal.
i tried SO_NOSIGPIPE and MSG_NOSIGNAL but both are not available in Solaris and my program is getting killed with "broken pipe" error.
Is there any way to detect broken pipe?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须使用
sigaction()
来专门忽略SIGPIPE
信号:...然后
send()
将返回 -1 并带有 < code>errno 设置为EPIPE
。You'll have to use
sigaction()
to specifically ignore theSIGPIPE
signal:...then
send()
will return -1 witherrno
set toEPIPE
.我想在 Solaris 中你只有有限的选择。 AFAIK,caf 建议的 sigaction 似乎是最好的解决方案。
I guess in Solaris you have only limited options. AFAIK, sigaction suggested by caf appears to be the best solution.