使用訊號實現非同步通知機制的例子

2021-09-06 10:27:13 字數 861 閱讀 9599

include #include #include #include #include #include #define max_len 100

//訊號sigio的處理函式

void input_handler(int num)

void main()

由此可見,為了在使用者空間中能處理乙個裝置釋放的訊號,它必須完成3項工作

(1)通過f_setown io控制命令設定裝置檔案的擁有者為本程序,這樣從裝置驅動發出的訊號才能被本程序接收到。

(2)通過f_setfl io控制命令設定裝置檔案支援fasync,即非同步通知機制。

(3)通過signal()函式連線訊號和訊號處理函式。

注:【fcntl系統呼叫】  

功能描述:根據檔案描述詞來操作檔案的特性。

用法:  

int fcntl(int fd, int cmd);

int fcntl(int fd, int cmd, long arg);

int fcntl(int fd, int cmd, struct flock *lock);

引數:  

fd:檔案描述詞。

cmd:操作命令。

arg:供命令使用的引數。

lock:同上。

有以下操作命令可供使用

f_getfl :讀取檔案狀態標誌。

f_setfl :設定檔案狀態標誌。

f_getown:獲取當前在檔案描述詞 fd上接收到sigio 或 sigurg事件訊號的程序或程序組標識 。

f_setown:設定將要在檔案描述詞fd上接收sigio 或 sigurg事件訊號的程序或程序組標識

基於非同步通知機制的按鍵驅動

按下按鍵是驅動程式通知應用程式 應用程式裡面要註冊訊號處理函式 驅動程式給應用程式發訊號 發給誰,這就要應用程式告訴驅動pid了 怎麼發,是驅動裡面呼叫kill fasync 為了使裝置支援非同步通知機制,驅動程式涉及以下3項工作 1.支援f setown命令,能在這個控制命令處理中設定filp f...

linux裝置驅動中的非同步通知機制

非同步通知的意思是 一旦裝置就緒,則主動通知應用程式,這樣應用程式根本就不需要查詢裝置狀態,這一點非常類似於硬體上 中斷 的概念,比較準確的稱謂是 訊號驅動的非同步i o 訊號是在軟體層次上對中斷機制的一種模擬,在原理上,乙個程序收到乙個訊號與處理器收到乙個中斷請求可以說是一樣的.訊號是非同步的,乙...

Linux訊號 程序間非同步的通訊機制

一 概念和功能 訊號實際上是乙個軟中斷,用於通知程序發生了某些事,該如何處理。實際上也歸為一類程序間通訊方式,訊號的生命週期 訊號的產生 訊號的註冊 訊號的阻塞 遮蔽 訊號的登出 訊號的處理 二 檢視訊號 kill l 檢視linux下全部訊號,可看出訊號是由編號和巨集組成 kill並不是殺死乙個程...