系統呼叫(使用者空間) 驅動(核心空間)
open open
close release
read write
ioctl ioctl
lseek llseek
select poll
select系統呼叫:用於多路監控,當沒有乙個檔案滿足要求時,select將阻塞呼叫程序。
int select(maxfd, *reasfds, *writefds, *exceptfds, *timeout)
timeout:為0
不管是否有檔案滿足要求,都立即返回,無檔案滿足要求返回0,有檔案滿足要求返回乙個正值。
timeout為null
select將阻塞程序,直到某個檔案滿足要求
timeout值為正整數
就是等待的最長時間,即select在timeout時間內阻塞程序。
返回值:
1、正常情況下返回滿足要求的檔案描述符個數
2、經過了timeout等待後仍無檔案滿足要去,返回值為0
3、如果select被某個訊號中斷,它將返回-1並設定errno為eintr
4、如果出錯,返回-1並設定相應的errno
使用方法:
1、將要監控的檔案新增到檔案描述符集
2、呼叫select開始監控
3、判斷檔案是否發生變化
poll方法
1、使用poll_wait將等待佇列新增到poll_table中。
2、返回描述裝置是否可讀或可寫的掩碼。
掩碼:pollin 裝置可讀
pollrdnorm 資料可讀
pollout 裝置可寫
pollwrnorm 資料可寫
poll只是做乙個登記,真正阻塞發生在select.c 中的do_select
poll裝置方法
當應用程式需要進行對多檔案讀寫時,常用到poll system v select bsd unix epoll linux2.5.45開始 沒驗證 系統呼叫配合使用。當poll函式返回時,會給出乙個檔案是否可讀寫的標誌,應用程式根據不同的標誌讀寫相應的檔案,實現阻塞或非阻塞的讀寫。這些系統呼叫功能相...
Linux 裝置驅動poll輪詢程式設計
linux系統下網路模型數select最為常用,當然,select只是檢測檔案系統資料狀態,並不只侷限於網路程式設計,select的功能需要底層驅動提供支援,其中核心應用即為等待佇列,其他模型,如poll和epoll,對驅動來說並無區別,驅動只是返回資料狀態而已。驅動支援select,需要實現fil...
Poll裝置操作(國嵌筆記)
poll裝置操作 使用者空間中的select對應核心中的poll 1.select系統呼叫用於多路監控,當沒有乙個檔案滿足要求時,select將阻塞呼叫程序。int select int maxfd,fd set readfds,fd set writefds,fe set exceptfds,co...