select()函數使用注意事項

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章