本文演示一個最簡單的基于libevent編程的例子。libevent是事件驅動的IO,適用于“好萊塢原則”。
“好萊塢原則”就是說:“不要給我們打電話,我們會給你打電話(don‘t call us, we‘ll call you)”。
所以基于libevent編程,和傳統的阻塞、非阻塞、select等會有一些差異,基于libevent編程的時候,不是我APP去詢問kernel能否做I/O,它是發過來的,讓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文章
448瀏覽量
39203 -
編程
+關注
關注
88文章
3627瀏覽量
93809 -
程序員
+關注
關注
4文章
952瀏覽量
29818
原文標題:一個最簡單的事件驅動的IO libevent編程例子
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論