c - 如何检查 Linux/FreeBSD 上 write() 调用被阻止的问题?

标签 c macos sockets tcp bsd

我在 Linux/FreeBSD 上有一个正在运行的进程。我对其进行了跟踪,发现其中一个线程在调用函数 write() 时被阻塞 - 作为参数,它有一个 TCP 套接字。它可能会挂起几个小时。

如何检查write()被阻塞的原因?潜在的问题是什么?

P.S.系统实用程序值得赞赏。

最佳答案

在我当前的情况下,存在以下问题。 DNS解析给了我一些距离很远,甚至无法访问的IP地址。 write() 挂起,因为从未从该主机收到 TCP 响应。

通过 setsockoptSO_SNDTIMEO 设置发送操作超时可以解决该问题。

关于c - 如何检查 Linux/FreeBSD 上 write() 调用被阻止的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21725716/

相关文章:

C 将随机矩阵写入文件,然后使用格式化 I/O 从文件中读取和复制所述矩阵

使用 while 循环计算输入中的字符

objective-c - 将带有 URL 参数的 HTML 文件加载到 Cocoa(不是 iPhone)WebView 中

sockets - 接受套接字后会发生什么? [复制]

java - 解决java中客户端连接到服务器的问题

将数字转换为二进制

c - 一次从数组读取两个字节?

macos - 如何从命令行调用Graphviz GUI?

python - 导入错误 : cannot import name 'load_entry_point' (PIP)

c - 这个C多线程tcp服务器正确吗?