#include <iostream>
#include <unistd.h>
#include <errno.h>
#include <sys/epoll.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
struct epoll_event ev; //事件临时变量
const int MAXEVENTS = 1024; //最大事件数
struct epoll_event events[MAXEVENTS]; //监听事件数组
int ret,pid;
int pipe_fd[2];
if((ret=pipe(pipe_fd))<0)
{
cout<<"create pipe fail:"<<ret<< ",errno:" << errno <<endl;
return -1;
}
ev.data.fd = pipe_fd[0]; //设置监听文件描述符
ev.events = EPOLLIN|EPOLLET; //设置要处理的事件类型
int epfd=epoll_create(MAXEVENTS);
ret=epoll_ctl(epfd,EPOLL_CTL_ADD,pipe_fd[0],&ev);
if (ret != 0)
{
cout << "epoll_ctl fail:" << ret << ",errno:" << errno << endl;
一个小例子演示下epoll和管道的使用
最新推荐文章于 2022-08-18 20:08:19 发布
本文通过一个实例展示了如何在C++中使用epoll进行事件监听,并结合管道(pipe)进行父子进程间的数据通信。父进程通过epoll_wait获取管道的读事件,读取子进程写入的数据。
摘要由CSDN通过智能技术生成