从epoll构建muduo-7 加入IMuduoUser

mini-muduo v0.06版本实现了库与库用户分离,引入了IMuduoUser接口作为库与用户间的桥梁。用户需实现onConnection和onMessage两个纯虚函数,TcpConnection新增send方法供用户发送数据。本版本修正了命名规范并暴露了TcpConnection,但仍有读写操作简单、内存泄漏等问题待解决。
提供的引用内容中未提及epoll里`evt->events`值等于0对应的event是什么的相关信息。在正常的epoll使用中,`evt->events` 是一个位掩码,用于表示与文件描述符相关的事件。通常,`evt->events` 值为0意味着没有任何事件发生。 在epoll机制里,常见的事件标志有 `EPOLLIN`(表示对应的文件描述符可以读)、`EPOLLOUT`(表示对应的文件描述符可以写)、`EPOLLERR`(表示对应的文件描述符发生错误)、`EPOLLHUP`(表示对应的文件描述符被挂断)等。当 `evt->events` 值为0,就表明当前没有这些事件中的任何一个发生在该文件描述符上。 以下是一个简单的epoll使用示例代码,展示了如何使用epoll和检查 `evt->events` 的值: ```c #include <stdio.h> #include <stdlib.h> #include <sys/epoll.h> #include <unistd.h> #define MAX_EVENTS 10 int main() { int epoll_fd = epoll_create1(0); if (epoll_fd == -1) { perror("epoll_create1"); return 1; } struct epoll_event ev, events[MAX_EVENTS]; // 这里可以设置要监听的文件描述符和事件 // ev.events = EPOLLIN; // ev.data.fd = some_fd; // epoll_ctl(epoll_fd, EPOLL_CTL_ADD, some_fd, &ev); int num_events = epoll_wait(epoll_fd, events, MAX_EVENTS, -1); if (num_events == -1) { perror("epoll_wait"); close(epoll_fd); return 1; } for (int i = 0; i < num_events; i++) { if (events[i].events == 0) { printf("No events occurred on fd %d\n", events[i].data.fd); } else { if (events[i].events & EPOLLIN) { printf("EPOLLIN event occurred on fd %d\n", events[i].data.fd); } // 可以继续检查其他事件标志 } } close(epoll_fd); return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值