Linux:检查套接字管道是否损坏而不执行read() write()

Linux:检查套接字管道是否损坏而不执行read() write(),第1张

概述我有一段简单的代码,可以定期将数据写入传递给它的fd. fd很可能是一个管道或插座,但可能是任何东西.每当我写()时,我都可以检测到套接字/管道何时关闭/断开,因为我收到了EPIPE错误(我忽略了SIGPIPE).但是我不会一直写到它,因此很长一段时间都可能无法检测到已关闭的套接字.我需要尽快对封闭做出反应.有没有一种方法可以检查fd而无需执行write()?如果我不写任何东西,我可以定期这样做. 我有一段简单的代码,可以定期将数据写入传递给它的fd. fd很可能是一个管道或插座,但可能是任何东西.每当我写()时,我都可以检测到套接字/管道何时关闭/断开,因为我收到了EPIPE错误(我忽略了SIGPIPE).但是我不会一直写到它,因此很长一段时间都可能无法检测到已关闭的套接字.我需要尽快对封闭做出反应.有没有一种方法可以检查fd而无需执行write()?如果我不写任何东西,我可以定期这样做.解决方法
struct pollfd pfd = {.fd = yourfd,.events = PolLERR};if (poll(&pfd,1,whatever) < 0) abort();if (pfd.revents & PolLERR) printf("pipe is broken\n");

这对我有用.请注意,套接字不完全是管道,因此显示不同的行为( – >使用PolLRDHUP).

总结

以上是内存溢出为你收集整理的Linux:检查套接字/管道是否损坏而不执行read()/ write()全部内容,希望文章能够帮你解决Linux:检查套接字/管道是否损坏而不执行read()/ write()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1047435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存