本文演示一個最簡單的基于libevent編程的例子。libevent是事件驅動的IO,適用于“好萊塢原則”。
“好萊塢原則”就是說:“不要給我們打電話,我們會給你打電話(don‘t call us, we‘ll call you)”。
所以基于libevent編程,和傳統的阻塞、非阻塞、select等會有一些差異,基于libevent編程的時候,不是我APP去詢問kernel能否做I/O,它是發(fā)過來的,讓IO事件來驅動你。
它的主要流程是:針對IO事件,注冊callback函數,一旦事件到來,由事件dispatch引擎,回調你的函數。
下面我們演示一個最簡單的例子,這個程序偵聽終端設備的標準輸入事件,注冊了一個回調函數cmd_event():

其中的:
event_set(&ev_cmd, STDIN_FILENO,
EV_READ | EV_PERSIST, cmd_event, NULL);
其實就是偵聽STDIN_FILENO的輸入,并且掛接cmd_event()回調函數的代碼。這樣一旦有輸入,cmd_event()被調用。cmd_event()會將輸入的字符串進行printf的輸出打印,程序運行效果如下:

-
IO
+關注
關注
0文章
510瀏覽量
42799 -
編程
+關注
關注
90文章
3722瀏覽量
97380 -
程序員
+關注
關注
4文章
956瀏覽量
30984
原文標題:一個最簡單的事件驅動的IO libevent編程例子
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
安裝libevent報錯
求一個PSRAM簡單的讀寫例子
DSP/BIOS中的IO設備驅動編程技術
ADI教你一個更簡單的方法實現可編程LED驅動器
設計一個簡單的白光LED驅動器電路
一個最簡單的事件驅動的IO libevent編程例子
評論