Libevent示例程序3 定时器程序续
来源:互联网 发布:seo基础视频教程 编辑:程序博客网 时间:2024/05/18 20:51
#include <sys/types.h> #include <event2/event-config.h> #include <sys/stat.h> #include <time.h> #include <sys/time.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <event2/event.h> #include <event2/event_struct.h> #include <event2/util.h> struct timeval lasttime; int event_is_persistent; static void timeout_cb(evutil_socket_t fd, short event, void *arg) { struct timeval newtime, difference; /* 这里是如何使用参数的 */ struct event *timeout = arg; double elapsed; evutil_gettimeofday(&newtime, NULL); evutil_timersub(&newtime, &lasttime, &difference); elapsed = difference.tv_sec + (difference.tv_usec / 1.0e6); printf("timeout_cb called at %d: %.3f seconds elapsed.\n", (int)newtime.tv_sec, elapsed); lasttime = newtime; if (! event_is_persistent) { struct timeval tv; evutil_timerclear(&tv); tv.tv_sec = 2; event_add(timeout, &tv); } } int main(int argc, char **argv) { struct event timeout; struct timeval tv; struct event_base *base; int flags; if (argc == 2 && !strcmp(argv[1], "-p")) { event_is_persistent = 1; flags = EV_PERSIST; } else { event_is_persistent = 0; flags = 0; } /* Initalize the event library初始化程序库 */ base = event_base_new(); /* Initalize one event,初始化一个event,注意在这里如何传递参数的 */ event_assign(&timeout, base, -1, flags, timeout_cb, (void*) &timeout); evutil_timerclear(&tv); tv.tv_sec = 2; /* 添加一个event */ event_add(&timeout, &tv); evutil_gettimeofday(&lasttime, NULL); /* 开始运行 */ event_base_dispatch(base); return (0); }
shenhuayu@shenhuayu-VirtualBox ~/libevent $ gcc test.c -g -o mytest -levent
shenhuayu@shenhuayu-VirtualBox ~/libevent $ ./mytesttimeout_cb called at 1403256637: 2.001 seconds elapsed.
timeout_cb called at 1403256639: 2.002 seconds elapsed.
timeout_cb called at 1403256641: 2.002 seconds elapsed.
timeout_cb called at 1403256643: 2.002 seconds elapsed.
timeout_cb called at 1403256645: 2.002 seconds elapsed.
timeout_cb called at 1403256647: 2.002 seconds elapsed.
timeout_cb called at 1403256649: 2.002 seconds elapsed.
timeout_cb called at 1403256651: 2.003 seconds elapsed.
timeout_cb called at 1403256653: 2.003 seconds elapsed.
timeout_cb called at 1403256655: 2.002 seconds elapsed.
timeout_cb called at 1403256657: 2.002 seconds elapsed.
timeout_cb called at 1403256659: 2.002 seconds elapsed.
timeout_cb called at 1403256661: 2.003 seconds elapsed.
timeout_cb called at 1403256663: 2.003 seconds elapsed.
timeout_cb called at 1403256665: 2.003 seconds elapsed.
^C
0 0
- Libevent示例程序3 定时器程序续
- Libevent示例程序3 定时器程序
- libevent入门---定时器程序
- Libevent示例程序1
- Libevent示例程序4 信号量
- Libevent示例程序2 socket程序
- Libevent示例程序5 echo服务器
- Libevent示例程序6 io事件
- Libevent示例程序7 bufferevent使用
- libevent 程序
- 后台运行bat定时器程序示例分享
- 定时器程序
- libevent echo服务端程序
- libevent小程序
- 第一个libevent程序
- linux编译libevent程序
- 示例程序1-3
- 示例程序
- we热二胎热
- java中的匿名内部类总结
- Codeforces Round #246 (Div. 2)
- 习题3-2 分子量 UVa1586
- 小结:sga_max_size和sga_target
- Libevent示例程序3 定时器程序续
- activity生命周期
- Java序列化与反序列化
- python 远程线程注入代码
- 习惯养成
- 创建cocos2d-x+lua项目
- cf442C Artem and Array
- mysql replace的使用
- 习题3-3 数数字 UVa1225