3.5 watchdog.c:计时器
来源:互联网 发布:淘宝的优势和劣势 编辑:程序博客网 时间:2024/05/16 15:21
该程序实现posfix中的计时器,使用alarm系统调用计时。计时器的主要功能是支持daemon_timeout参数,但master等进程不受该参数限制。
postfix用daemon_timeout参数限定守护进程生存时间,默认18000秒。在执行模板(singer_server.c,multi_server.c,见4.4节)中,使用watchdog来让该参数生效:
watchdog =watchdog_create(var_daemon_timeout, (WATCHDOG_FN) 0, (void *) 0);
在qmgr模块中,daemon_timeout参数也可以使用event_request_timer函数(见3.7.5)安排一个qmgr_transport_abort时间事件来实现。
/util/watchdog.c/* * UNIX alarms are not stackable, but we can save and restore state, so that * watchdogs can at least be nested, sort of. */struct WATCHDOG { unsigned timeout;/* our time resolution */ WATCHDOG_FN action;/* application routine */ char *context;/* application context */ int trip_run;/* number of successive timeouts */ WATCHDOG *saved_watchdog;/* saved state */ struct sigaction saved_action;/* saved state */unsigned saved_time;/* saved state */};
timeout为超时值,action为回调函数。
发生超时时,执行回调函数或杀死进程:
if (wp->action) wp->action(wp, wp->context);else { killme_after(5);
在watchdog_start函数中开启alarm(wp->timeout)(实际上alarm不会以timeout时间参数来触发而会以timeout/WATCHDOG_STEPS的节奏来触发,WATCHDOG_STEPS默认值为3)
0 0
- 3.5 watchdog.c:计时器
- C ++ 计时器
- watchdog
- WatchDog
- Watchdog
- watchdog
- WatchDog
- watchdog
- Watchdog
- Watchdog
- Watchdog
- c、c#---计时器
- [C#] Timer计时器
- linux c 语言 计时器
- [C#] Timer计时器
- C语音简单计时器
- C++-1、计时器
- C 计时器大全
- 微信公众平台开发3-Https请求的封装
- log4cxx在ubuntu14.04中编译
- 显示、隐藏NavigationBar(虚拟按键)
- plsql无法中文条件查询
- java多线程之Phaser
- 3.5 watchdog.c:计时器
- iOS中的加密:MD5
- Word备忘
- Java异常处理和设计
- Js获取当前日期时间及其它操作
- 各个论文网站
- c++作业3
- hihocoder 1288:Font Size--微软2016校园招聘4月在线笔试
- 设计模式之命令模式