IO多路復用與select函式原理

2022-09-25 07:21:14 字數 707 閱讀 7490

同時監聽標準輸入和管道,避免陷入讀、寫、報錯的阻塞態。select函式引數裡面有傳入讀集合、寫集合以及error集合,會將對應的檔案描述符存入對應的集合中(fd_set資料型別)。

fd是檔案描述符,對應核心態檔案索引陣列的下標。

#include 

int main(int argc,char* ar**);

fd_set rdset;//監聽讀集合

struct timeval timeout;

struct stat timrrecord;//記錄檔案狀態

while (1)//開始死迴圈通訊直到一方主動讀eof

time_t now ;

struct tm *tm_now ;

time(&now) ;

tm_now = localtime(&now) ;//get time

//輪詢

if(fd_isset(fdr,&rdset))

if(fd_isset(stdin_fileno,&rdset))

}return 0;

}

IO多路復用 select

select系統呼叫的目的是 在一段指定時間內,監聽使用者感興趣的檔案描述符上的可讀 可寫和異常事件。poll和select應該被歸類為這樣的系統 呼叫,它們可以阻塞地同時探測一組支援非阻塞的io裝置,直至某乙個裝置觸發了事件或者超過了指定的等待時間 也就是說它們的職責不是做io,而是幫助 呼叫者尋...

IO多路復用 select

出自朱有鵬老師的課堂 include include include include include include include include include int main void 當前有兩個fd,乙個是fd乙個是0 處理 myset fd zero myset 全部清零 fd set ...

I O多路復用 select

int select int n,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout 有三種型別的描述符型別 readset writeset exceptset,分別對應讀 寫 異常條件的描述符集合。fd s...