歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux的I/O多路轉接模型和select()

Linux的I/O多路轉接模型和select()

日期:2017/2/28 16:07:04   编辑:Linux教程

Linux的I/O多路轉接模型:

在這種模型下,如果請求的I/O操作阻塞,它不是真正阻塞I/O,而是讓其中一個函數等待,在這期間,I/O還能進行其他操作。select()和poll()就屬於這種模型。

select()函數說明

頭文件

#include<sys/types.h>

#include<sys/time.h>

#include<unistd.h>

原型 int select(int numfds,fd_set *readfds,fd_set *writefds,fd_set *exeptfds,struct timeval *timeout 參數

numfds:需要檢查的號碼最高的文件描述符+1

readfds:由select()監視的讀文件描述符集合

writefds:由select()監視的寫文件描述符集合

exeptfds:由select()監視的異常處理文件描述符集合

timeout:

--- NULL:永遠等待,直到捕捉到信號或文件描述符已經准備好為止

---具體值:struct timeval的指針,若timeout時間還沒准備好,則立即返回

---0 :從不等待,測試所有指定的描述符並立即返回

返回值

成功:准備好的文件描述符

-1:出錯

對文件描述符操作的四個宏:

Copyright © Linux教程網 All Rights Reserved