工作代码片段-libevent

C++回调函数在文件操作中的应用
本文探讨了如何使用C++回调函数处理文件读写事件,通过配置事件、注册回调函数、初始化事件和添加事件到事件基,实现文件操作的异步处理。详细介绍了事件基的创建、配置、初始化及事件的添加过程,并展示了如何通过回调函数实时响应文件读取事件。

一个简单的测试实例:

       void acall(evutil_socket_t af, short, void *param)
       {
           std::cout << "calling" << std::endl;
       }

        sfd =  open("a.txt", 'r');
        struct event_config *cfg = event_config_new();
        event_config_avoid_method(cfg, "epoll");
        event_base *bev = event_base_new_with_config(cfg);//event_base_new();
        event_config_free(cfg);
        event *evn = event_new(bev, sfd, EV_READ| EV_WRITE |EV_PERSIST, acall, 0);
        std::cout << "open:" << sfd << std::endl;
        int e = event_initialized(evn);
        std::cout << "init:" << e << std::endl;
        e = event_add(evn, 0);
        std::cout << "ADD:" << e << std::endl;
        event_set_log_callback(logfn);
        char buff[256];
        read(sfd, buff, 12);
        std::cout << buff << std::endl;
        pthread_t pf;
        pthread_create(&pf, NULL, rfile, NULL);
        e =  event_base_dispatch(bev);
        pthread_join(pf, NULL);



sstp: cd $(PUBLIC_APPS_PATH)/sstp-client-1.0.18 && test -e Makefile || \ (autoreconf -i && \ chmod 777 configure && \ export LDFLAGS="-L$(PUBLIC_APPS_PATH)/sstp-client-1.0.18/src/libsstp-api/.libs \ -L$(PUBLIC_APPS_PATH)/sstp-client-1.0.18/src/pppd-plugin/.libs \ -Wl,-rpath=/opt/toolchain-mipsel_24kc_gcc-5.4.0_uClibc-1.0.14/lib" && \ export CFLAGS="-I$(PUBLIC_APPS_PATH)/ppp-2.4.5" && \ export PKG_CONFIG_LIBDIR="$(PUBLIC_APPS_PATH)/$(INCLUDE_SSL_LIB_NAME)/install/lib/pkgconfig" && \ export OPENSSL_CFLAGS="-I$(PUBLIC_APPS_PATH)/$(INCLUDE_SSL_LIB_NAME)/install/include" && \ export OPENSSL_LIBS="-l$(PUBLIC_APPS_PATH)/$(INCLUDE_SSL_LIB_NAME)/install/lib -lssl -lcrypto -lpthread -ldl" && \ export LIBEVENT_CFLAGS="-I$(PUBLIC_APPS_PATH)/libevent-2.1.12-stable/include" && \ export LIBEVENT_LDFLAGS="-L$(PUBLIC_APPS_PATH)/libevent-2.1.12-stable/.libs" && \ export LIBEVENT_LIBS="-L$(PUBLIC_APPS_PATH)/libevent-2.1.12-stable/.libs -levent" && \ ./configure --host=$(HOST) \ --sbindir=/usr/sbin \ --enable-shared=yes \ --with-openssl=$(PUBLIC_APPS_PATH)/$(INCLUDE_SSL_LIB_NAME)/install \ --with-libevent=$(PUBLIC_APPS_PATH)/libevent-2.1.12-stable \ --with-pppd-plugin-dir=$(PUBLIC_APPS_PATH)/ppp-2.4.5/pppd/plugins \ ) cd $(PUBLIC_APPS_PATH)/sstp-client-1.0.18 && $(MAKE)这是不是已经给configure传递头文件路径了export CFLAGS="-I$(PUBLIC_APPS_PATH)/ppp-2.4.5" && \,我看/ppp-2.4.5/pppd/文件夹下有pppd.h文件,为什么还报错:checking for pppd/pppd.h... no configure: error: pppd.h missing Hint: apt-get install ppp-dev /opt/bba/NX505_EU1_1/platform/build/makes/Makefile.apps.public:2455: recipe for target 'sstp' failed make: *** [sstp] Error 1
最新发布
11-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值