Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 是套接字文件描述符>;FD_设置大小是否在OS X上有效?_Macos_Sockets_File Descriptor - Fatal编程技术网

Macos 是套接字文件描述符>;FD_设置大小是否在OS X上有效?

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(…),以增加文件描述符的最大数量。我们需要

在OSX上,我们发现调用::socket(…)有时会返回大于FD_SETSIZE的文件描述符。根据::socket(…)的文档,这是一个成功的请求,因为只有返回值-1表示失败。然而,在我们的整个代码库中——在使用描述符之前——我们正在测试它是否在0到FD_SETSIZE(包括)的范围内

这是正确的做法,还是我们可以安全地继续使用描述符大于FD_SETSIZE的套接字


发生这种情况的原因是,我们使用RLIMIT_NOFILE标志调用::setrlimit(…),以增加文件描述符的最大数量。我们需要这样做,因为我们的应用程序必须同时打开大量文件。但是,这个值是通过调用带有KERN_MAXFILESPERPROC标志的sysctl(…)来获得的,并在运行时设置,而FD_SETSIZE是一个编译时设置。

您可以使用值大于
FD_SETSIZE
的套接字描述符,而不是
FD_set