我在 Linux/FreeBSD 上有一个正在运行的进程。我对其进行了跟踪,发现其中一个线程在调用函数 write()
时被阻塞 - 作为参数,它有一个 TCP 套接字。它可能会挂起几个小时。
如何检查write()
被阻塞的原因?潜在的问题是什么?
P.S.系统实用程序值得赞赏。
最佳答案
在我当前的情况下,存在以下问题。 DNS解析给了我一些距离很远,甚至无法访问的IP地址。 write()
挂起,因为从未从该主机收到 TCP 响应。
通过 setsockopt
和 SO_SNDTIMEO
设置发送操作超时可以解决该问题。
关于c - 如何检查 Linux/FreeBSD 上 write() 调用被阻止的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21725716/