gpt4 book ai didi

linux - 在 HPUX 上连接失败后空闲的 tcp 文件描述符

转载 作者:可可西里 更新时间:2023-11-01 02:49:55 24 4
gpt4 key购买 nike

我有一个客户端 tcp 套接字(在 C++ 中),它有一个循环,它会在一定的时间间隔内重试打开套接字并连接到服务器,直到成功为止。

程序中的一个错误导致连接失败后未在文件描述符上调用 close,并且在调用 socket 时再次使用相同的(打开的)描述符并在重试重新连接时在循环的下一次迭代中连接 connect

在 Linux 机器上,这不会导致任何问题,而在 HPUX 上,它最终会导致错误 24 - '打开的文件太多'' - lsof 将这些显示为 TCP *:* (IDLE)

Linux 和 HPUX 之间有什么区别?

最佳答案

我相信它来自 HPUX 向内核添加套接字的起源。如果我没记错的话(从 1980 年代后期开始),他们添加了 Berkeley Sockets 作为可共享的对象库——本质上是文件 i/o 系统之上的一两层。

UX 仍然以这种方式运行表明 socket() 调用没有重用未使用的文件描述符,可能是因为它不知道它们,并且没有维护工程师负责添加它。在 Linux 中,socket() 与其他主要组件一样是内核的一部分,因此它当然知道哪些文件描述符可用于重用。

关于linux - 在 HPUX 上连接失败后空闲的 tcp 文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1717186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com