7 4 POLL裝置方法

2021-09-28 20:45:29 字數 893 閱讀 6973

系統呼叫(使用者空間) 驅動(核心空間)

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...