Unix環境高階I O(Select)

2021-04-07 07:09:03 字數 1388 閱讀 4395

允許程序高數核心等待多種

i/o事件中的任何一種出現,並且進當這些時間中的乙個或多個出現時,或這指定的時間已過去時才喚醒呼叫程序。因此函式有如下兩種作用:

1. 等待多個

i/o

2. 設定

i/o操作超時

#include

struct timeval

2.1 #include

多路i/o

int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

返回: -1

出現錯誤。

0 在描述字就緒前時間到。正整數,就緒描述字個數

第乙個引數

n, 指明要被測試描述字個數,他的值是要被測試的最大描述符加1。

readfds, writefds, exceptfds,

分別給出我們要求核心測試讀,寫,和例外條件的描述字集合。描述字集合型別為

fd_set

,由下面幾個函式使用。這

3個引數任意乙個豆科一時空指標。當

3個引數都為空時,

select

函式為定時器,其精度高於

sleep

。最後乙個引數

timeout

,告訴核心等待指定描述府多長時間。分三種情況:

永遠等待。無時間限制,僅當指定的描述字種有

i/o就緒時才返回。

timeout

為空。等待固定一段時間。等待時間由

timeout

引數指定

不等待。

timeout

所指timeval

結構體成員均為0

2.2 #include

描述字屬性集合操作巨集

初始描述字集合

fdset

為空void fd_zero(fd_set* fdset);

無返回將

fileds

從描述字集合

fdset

種清除void fd_clr(int filedes, fd_set* fdset);

無返回判斷

filedes

屬於fdset

。int fd_isset(int fileds, fd_set* fdset);

返回:是返回非0,否

0

將filedes

加到描述字集合中

void fd_set(int filedes, fd_set* fdset);

無返回#include

#include

#include

#include

int

main(void)

unix環境高階程式設計

unix 日曆時間 自1970 年1 月1 日00 00 00 以來的國際標準時間 utc 程序時間 cpu 時間 時鐘時間 程序執行時間的總量。使用者cpu 時間 執行使用者指令時間量。系統cpu 時間 執行核心所經歷時間。命令 time 第三章至第七章 原子操作 任何乙個要求多於1 個函式呼叫的...

unix環境高階程式設計

檔案描述符file descriptor通常是乙個小的非負整數,核心用以標識乙個特定程序正在訪問的檔案。當核心開啟乙個現有檔案或建立乙個新檔案時,它都返回乙個檔案描述符。在讀寫檔案時,可以私用這個檔案描述符。按管理,每當執行乙個新程式時,所有的shell都為其開啟了3個標準檔案描述符 標準輸入,標準...

UNIX環境高階程式設計

本書是被譽為unix程式設計 聖經 的advanced programming in the unix environment一書的更新版。在本書第1版出版後的十幾年中,unix行業已經有了巨大的變化,特別是影響unix程式設計介面的有關標準變化很大。本書在保持了前一版風格的基礎上,根據最新的標準對...