⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time2.c

📁 本文件介绍了unix内核的c源代码
💻 C
字号:
#include <comlib.h>typedef struct stuSimTimer{	char szName[20];				/* 定时器名称 */	int  nInterval;					/* 定时间隔,取值为0时表示取消定时 */	time_t nLast;					/* 上一次定时的系统时间 */	int  nRemain;					/* 剩余定时时间 */	int (*pfunc)(char *);			/* 函数指针,指向的定时到达后的执行代码 */} SIMTIMER;typedef SIMTIMER * PSIMTIMER;int func1(char *p)					/* 模拟定时器响应函数 */{	PrintLog(stdout, "Now Timer : %s", p);	return 0;}#define MAXTIMER 20SIMTIMER sTimer[MAXTIMER] =					/* 模拟定时器数组 */{	{"TIME1", 10, 0, 10, func1},			/* 定时器“TIMER1”,定时10秒 */	{"TIMER2", 4, 0, 4, func1}				/* 定时器“TIMER2”,定时4秒 */};int nTopTimer = 2;							/* 总共模拟两个定时器 */void timefunc(int sig)						/* 基本定时器响应函数 */{	int i;	/* 模拟定时器算法 */	for (i=0; i<nTopTimer; i++)						/* 遍历模拟定时器数组 */	{		sTimer[i].nRemain--;						/* 定时剩余时间减1 */		if (sTimer[i].nRemain <= 0)					/* 模拟定时器定时到达 */		{			sTimer[i].pfunc(sTimer[i].szName);		/* 执行模拟定时响应函数 */			sTimer[i].nRemain = sTimer[i].nInterval; 	/* 重置模拟定时器 */		}	}	signal(SIGALRM, timefunc);						/* 再次设置捕获定时信号 */	alarm(1);										/* 基本定时器再次定时 */}int main(){	signal(SIGALRM, timefunc);	alarm(1);										/* 基本定时器首次定时 */	PrintLog(stdout, "---Begin---");	while(1)								/* 主进程保持运行、不退出的状态 */	{		sleep(100);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -