工作代码片段-libevent

本文探讨了如何使用C++回调函数处理文件读写事件,通过配置事件、注册回调函数、初始化事件和添加事件,实现了对文件操作的高效响应。详细介绍了open、event_base_new_with_config、event_new、event_add等关键步骤,并展示了如何通过read函数读取文件内容,最后通过多线程并发读取文件,进一步提升了文件操作效率。

一个简单的测试实例:

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值