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

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

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