#include <sys/select.h>
int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
int pselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t *sigmask);
FD_CLR(int fd, fd_set *set);
FD_ISSET(int fd, fd_set *set);
FD_SET(int fd, fd_set *set);
FD_ZERO(fd_set *set);
注意事項:
1 每次調用前,重新設定所關心的描述符;
2 每次調用前,重新設定等待時間;
3 準備好的描述符定義為: read/write 描述符時不會阻塞 (socket 斷開将可讀 ) 。
解釋:
1 fd_set* 以指針形式傳入, select 将掃描所關心的描述符,改變其值後傳回。使用者判斷此傳回值得知哪些描述符可讀 / 可寫。這意味着:在 select 傳回後,描述符集必須重新設定!
2 Timeout 以指針傳入,就是說系統不保證其值不會被更改!
本文轉自 zhenjing 部落格園部落格,原文連結: http://www.cnblogs.com/zhenjing/archive/2011/04/20/2021770.html ,如需轉載請自行聯系原作者