摘要:
在Linux中每一个进程的数据是存储在一个task_struct结构(定义在sched.h中)中的。 该结构中有一个用于保存打开文件信息的成员:files,该成员类型是:struct files_struct*(定义在file.h)。 可以看到该结构中保存了所有与进程打开文件相关的信息,其中fd_a 阅读全文
摘要:
http-server例子是libevent提供的一个简单web服务器,实现了对静态网页的处理功能。 1 /* 2 * gcc -g -o http-server http-server.c -levent 3 */ 4 #include <stdio.h> 5 #include <stdlib.h 阅读全文
摘要:
listener是libevent封装的一个方便生成监听者的一组结构和函数,其中包括: 1 /* 2 * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu> 3 * Copyright (c) 2007-2012 Niels Pr 阅读全文
摘要:
hello-world是libevent自带的一个例子,这个例子的作用是启动后监听一个端口,对于所有通过这个端口连接上服务器的程序发送一段字符:hello-world,然后关闭连接。 1 /* 2 * gcc -g -o hello-world hello-world.c -levent_core 阅读全文
摘要:
signal-test是libevent自带的一个例子,展示了libevent对于信号事件的处理方法。 1 #include <sys/types.h> 2 3 #include <event2/event-config.h> 4 5 #include <sys/stat.h> 6 #include 阅读全文
摘要:
有时候调试bug需要知道某个函数从哪里调用导致出了问题的,就需要打印函数调用堆栈信息,在Linux可以使用backtrace函数来实现,下面是一个简单的例子: 编译: g++ -rdynamic -o testDumpStack ./testDumpStack.cpp 执行结果: 阅读全文
摘要:
eventop:定义了event_base使用的后端IO复用的一个统一接口 定义的成员包括: 1、name:后端的名字,例如:select、poll、epoll 2、init:用来初始化一个event_base来使用这个后端的函数。 3、add:激活一个给定文件描述符或者信号上的读或写。 4、del 阅读全文
摘要:
time-test例子是libevent自带的一个例子,通过libevent提供的定时事件来实现,间隔固定时间打印的功能。 1 /* 2 * gcc -g -o time-test time-test.c -levent_core 3 */ 4 5 #include <sys/types.h> 6 阅读全文
摘要:
在libevent中,获取event类型对象的方法有两种,event_assign、event_new 1、event_assign() 实现: 其实event_assign的作用就是把给定的event类型对象的每一个成员赋予一个指定的值。 2、event_new() 实现: event_new的实 阅读全文
摘要:
struct bufferevent定义在文件bufferevent_struct.h中。 libevent中的event结构对应套接字的某一个事件,读或者写,bufferevent结构对应一个套接字,其中有两个event结构:evread、evwrite。 对bufferevent的操作主要有: 阅读全文