int
fcntl
(int fd,
int cmd,
long arg)
;fcntl
(檔案描述符,cmd,arg):獲取或設定檔案一些命令
cmd:
f_getfl:獲取檔案開啟時的flag,通過返回值得到,忽略arg引數
f_setfl:設定檔案的flag,通過arg進行設定
select
(最大的檔案描述符+
1,讀集,寫集,異常集,超時結構體):監視一堆檔案描述符是否發生了可讀,可寫或異常
成功返回發生了指定事件的檔案描述符,失敗返回-
1,並設定errno的值
返回0則代表超時
fd_clr
(fd,集合位址):將檔案描述符從指定的集合中刪除
fd_isset
(fd,集合位址):判斷檔案描述符是否在指定的集合中,是則返回乙個非0值,不是則返回0值
fd_set
(fd,集合位址):將檔案描述符加入到指定的集合中
fd_zero
超時結構體:
struct timeval
; 使用select可以實現安全的微妙級別的睡眠:
select(0
,null
,null
,null
,超時結構體)
; 等待函式超時則睡眠結束
IO多路轉接 epoll高階
例項三 基於網路c s非阻塞模型的epoll et觸發模式 epoll事件有兩種模型 et模式即edge triggered工作模式。如果我們在第1步將rfd新增到epoll描述符的時候使用了epollet標誌,那麼在第5步調用epoll wait之後將有可能會掛起,因為剩餘的資料還存在於檔案的輸入...
I O多路轉接
對於多個非阻塞i o,怎麼知道i o何時已經處於可讀或可寫狀態?如果採用迴圈一直呼叫write read,直到返回成功,這樣的方式成為輪詢 polling 大多數時間i o沒有處於就緒狀態,因此這樣的輪詢十分浪費cpu。一種比較好的技術是使用i o多路轉接,也叫做i o多路復用。其基本思想為 先構造...
I O多路轉接
include include include include include include include include include include include 巨集定義埠號 define portnumber 8000 define max line 80 int main void...