select() 函数

select() 函数是一个多路复用的系统调用,可以同时监听多个文件描述符是否就绪(可读、可写、异常等),在某个文件描述符就绪时返回,通常用于实现高并发的 I/O 操作。其函数原型为:

int select(int nfds, fd_set *readfds, fd_set *writefds,
           fd_set *exceptfds, struct timeval *timeout);

其中,nfds 是待检查的文件描述符个数,应该设置为所有待检查的文件描述符的最大值加一。readfds、writefds、exceptfds 分别是指向可读、可写、异常的文件描述符集合的指针,如果对应的文件描述符集合中有文件描述符就绪,将被置为 1。timeout 参数指定超时时间,即函数最长等待的时间。如果设置为 NULL,则 select() 函数会一直阻塞等待,直到某个文件描述符就绪或者被中断(例如接收到信号)。如果设置为非 NULL,则函数最长等待 timeout 时间后返回,无论文件描述符是否就绪。

参考: https://linux.die.net/man/2/select

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:36:58

results matching ""

    No results matching ""