歡迎光臨
每天分享高質量文章

一個最簡單的事件驅動的IOlibevent程式設計例子

本文演示一個最簡單的基於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的輸出列印,程式執行效果如下:

贊(0)

分享創造快樂