Linux系统下多个定时器的管理

这篇博客介绍了如何在Linux系统中管理多个定时器,由于setitimer限制,一个进程中只能设置一个定时器,因此作者提供了一种自定义的解决方案,通过结构体和信号处理函数实现了一个最多能管理20个定时器的系统。代码示例中展示了创建、设置和删除定时器的函数,并给出了实际应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下只拥有一个定时器,setitimer一个进程中只能有一个,下一个会覆盖前一个的定时器,想一个进程开启多个定时器只能自己实现。
<pre name="code" class="plain">1)定义声明
/* ================================================
 Name        : SYS_Time.h
 Author      : HS_NEU
 Version     : v1.0.0
 Copyright   :
 Description :
 date        : 2013-11-22
 ================================================== */
#ifndef _SYS_TIME_H_
#define _SYS_TIME_H_
/* ============= INCLUDE ============= */
#include "debug.h"
#include <time.h>

#define  SYS_RET_OK              (0)
#define  SYS_RET_ERR             (-1)

#define TIMER_SINGLE	(0)
#define TIMER_CYCLE		(1)

/* ============= MACRO ============= */
#define		TIMER_NUM_MAX		(20)

/* ============= ENUM ============== */

/* ============= STRUCTURE ========= */
typedef void(*TimerCallBack)();

typedef struct _sys_TimerNode_str{
	timer_t		timer;
	int			timerID;
	int			useFlag;
	TimerCallBack	func;
	//void *callBackArg;
	int 		mode;
}SYS_TimeNode_STR;

/* ============= VARIABLE ========== */

/* ============= FUNCTION ========== */
int SYS_TimeInit();


/*----------------------------Timer-----------------------------*/
int SYS_TimeInit();
int SYS_SetTimer(int TimerID, int mSec, TimerCallBack proc,int mode);
int SYS_KillTimer(int TimerID);
#endif	//_SYS_TIME_H_


2)实现函数
/* ================================================
 Name        : SYS_Time.c
 Author      : HS_NEU
 Version     : v1.0.0
 Copyright   :
 Description :
 date        : 2013-11-22
 ====================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值