Macos 是套接字文件描述符>;FD_设置大小是否在OS X上有效?
在OSX上,我们发现调用::socket(…)有时会返回大于FD_SETSIZE的文件描述符。根据::socket(…)的文档,这是一个成功的请求,因为只有返回值-1表示失败。然而,在我们的整个代码库中——在使用描述符之前——我们正在测试它是否在0到FD_SETSIZE(包括)的范围内 这是正确的做法,还是我们可以安全地继续使用描述符大于FD_SETSIZE的套接字Macos 是套接字文件描述符>;FD_设置大小是否在OS X上有效?,macos,sockets,file-descriptor,Macos,Sockets,File Descriptor,在OSX上,我们发现调用::socket(…)有时会返回大于FD_SETSIZE的文件描述符。根据::socket(…)的文档,这是一个成功的请求,因为只有返回值-1表示失败。然而,在我们的整个代码库中——在使用描述符之前——我们正在测试它是否在0到FD_SETSIZE(包括)的范围内 这是正确的做法,还是我们可以安全地继续使用描述符大于FD_SETSIZE的套接字 发生这种情况的原因是,我们使用RLIMIT_NOFILE标志调用::setrlimit(…),以增加文件描述符的最大数量。我们需要
发生这种情况的原因是,我们使用RLIMIT_NOFILE标志调用::setrlimit(…),以增加文件描述符的最大数量。我们需要这样做,因为我们的应用程序必须同时打开大量文件。但是,这个值是通过调用带有KERN_MAXFILESPERPROC标志的sysctl(…)来获得的,并在运行时设置,而FD_SETSIZE是一个编译时设置。您可以使用值大于
FD_SETSIZE
的套接字描述符,而不是FD_set