select()函數使用注意事項
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
第一個參數是最大文件描述符+1
若這個參數寫錯,就會檢測不到讀寫事件,總是超時。
在一個循環當中使用時
select前要初始化話fdset和超時時間
loop {
設置fdset和超時時間
selec();
}
select()可以檢測到遠程連接斷開
讀描述符socket斷開時,這個socket變爲一直可讀,但是讀到的事文件結尾。這裏可以用來判斷遠程連接斷開。
select() 用作定時器
select最後一個參數設置超時時間,能夠用來作爲定時器使用,可以用作微秒級別定時。
tv.tv_sec = 10;
tv.tv_usec = 100;
select(0,NULL,NULL,NULL,&tv)