首页 > 解决方案 > 在套接字 fd 大于 1024 的情况下,由 chilkat lib 中的系统调用“select”引起的潜在崩溃

问题描述

我们正在使用 linux x64 上的 chilkat lib 从 Internet 获取一些 Web 资源。注意到 chilkat lib 函数称为“select”来监视从 gdb 到我的程序的套接字事件,下面的函数称为“select”:

ChilkatSocket::waitWriteableMsHB(unsigned int, bool, bool, SocketParams&, LogBase&) () ChilkatSocket::waitReadableMsHB(unsigned int, SocketParams&, LogBase&) ()

那么当socket fd大于FD_SETSIZE(linux上为1024)时会导致FD_SET溢出,进而导致程序崩溃?是否有必要使用现代系统调用“poll”或“epoll”?

谢谢

标签: chilkat

解决方案


当 fd set 小于 FD_SETSIZE 时,Chilkat 可能会使用 select 系统调用。如果 fd 设置为 1024 或更大,它将始终使用 poll。不必担心 FD_SET 溢出,因为 Chilkat 会在所有重要的情况下选择使用“轮询”。


推荐阅读