libeventのイベントループ

する#include <stdio.hに> 
の#include "イベント2 / event.h" 
の#include <unistd.h> 

ボイドstdin_callback(evutil_socket_tのFD、短いもの、ボイド*引数)
{ 
    静的INT i = 0; 
    チャーBUF [1024]。
    構造体のイベント・ベース=(構造体event_base *)引数。
    printf( "\ nを開始stdin_callback"); 
    INT RET =(FD、BUF、はsizeof(BUF))を読み取ります。
    BUF [RET] = '\ 0'; 
    printf( "BUF%S \ n"は、BUF)。
    printf( "stdin_callbackエンド\ nを"); 
    IF(++ I> = 1)
    { 
        // event_base_loopbreak(ベース)
        
        // event_base_loopexit(ベース、NULL); 
        
        構造体体timevalタイムアウト= {5,0}。
        event_base_loopexit(ベース、およびタイムアウト)。

INTメイン()
{ 
    構造体event_base *基地= event_base_new()。
    構造体のイベント* EV0 = event_new(ベース、STDIN_FILENO、0、NULL.NULL)。
    event_assign(EV0、ベース、STDIN_FILENO、EV_READ | EV_PERSIST、stdin_callback、ベース); 
    event_add(EV0、NULL); 
         
    構造体のイベント* EV1 = event_new(ベース、STDIN_FILENO、0、NULL.NULL)。
    event_assign(EV1、ベース、STDIN_FILENO、EV_READ | EV_PERSIST、stdin_callback、ベース); 
    event_add(EV1、NULL); 

    / *イベントループ* / 
    event_base_loop(ベース、0); //效果等同于event_base_dispatch(ベース)
    
    // event_base_loop(ベース、EVLOOP_ONCE)。
    
    // event_base_loop(ベース、EVLOOP_NONBLOCK)。
    
    (event_base_got_break(ベース))であれば 
        プット(「イベントベース・ループブレーク」)。
    (event_base_got_exit(ベース))であれば、他
        プット(「イベント・ベースのループ終了」)。
    
    event_base_free(ベース)
    event_free(EV0)。
    event_free(EV1)。
    0を返します。

}


おすすめ

転載: blog.51cto.com/5468775/2406505