gpt4 book ai didi

select - socket编程中如何使用select()函数?

转载 作者:行者123 更新时间:2023-12-03 11:53:32 24 4
gpt4 key购买 nike

原型(prototype)是:

int select (int nfds,
fd_set *read-fds,
fd_set *write-fds,
fd_set *except-fds,
struct timeval *timeout);

很长一段时间以来,我一直在努力理解这个功能。我的问题是,如果它检查从 0 到 nfds-1 的所有文件描述符,并在返回时修改 read-fds、write-fds 和 except-fds,为什么我需要使用 FD_SET 将文件描述符添加到集合一开始,它会检查所有文件描述符,还是不检查?

最佳答案

它不会检查从 0 到 nfds -1。第一个参数只是提供了一个上限,即所使用的文件描述符在数字上的大小。这是因为集合本身可能表示为位向量,而无法知道实际使用了多少位。将其指定为单独的参数有助于select()避免检查未使用的文件描述符。

此外,一个不在 e.g. 中的描述符调用 select() 时的读取集根本没有被检查,所以当调用返回时它也不会出现在集合中。

关于select - socket编程中如何使用select()函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851759/

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