linux c之alarm函数的使用,定时器的实现

原创 2016年05月30日 11:24:14
#include <unistd.h>
#include <stdio.h>
#include  <stdlib.h>


int main(int argc, char *argv[]) {

	unsigned int  timeleft;
	printf("Set the alarm and sleep\n"); 
	//设置定时器,时钟一到就发送一个信号SIGALRM到进程。
	alarm(10);
	sleep(5);
	timeleft = alarm(0); //获得上一个闹钟的剩余时间:5秒 
	printf( "Time left    before cancel, and rearm: %d\n", timeleft );
	
	alarm(timeleft);	
	printf("Hanging around, waiting to die\n"); 
	pause(); //让进程暂停直到信号出现

	return EXIT_SUCCESS;

}

#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

int isExit = 1;

//通过调用alarm来设置计时器,然后继续做别的事情。当计时器计时到0时,信号发送,处理函数被调用。
static void timer(int sig) {
	
	static int count = 0;
	count++;
	printf("\ncount = %d\n", count);

	if (sig == SIGALRM)
	{
		printf("timer\n");
	} 
	signal(SIGALRM, timer); //重新注册定时器
	alarm(1);//定时1s
	if (count == 5) 
	{
		alarm(0);
		isExit = 0;		
	}	
	return;
}

//linux定时器的实现
int main(int argc, char *argv[]) {
	
	signal(SIGALRM, timer);//执行定时器函数
	printf("wait 1s\n");
	alarm(1); //定时1s	
	while (isExit)
	{
		
	};
	printf("finish\n");
	return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

小记——linux定时器之alarm

本来想写下自己的东西,但看到有一篇东西写得很好,于是就不自己写了。 出处:https://typecodes.com/linux/linuxalarmknockfunc.html 1. alarm函数...

信号的发送和捕捉函数(alarm、kill、raise、pause、 sleep、abort)

1.   alarm函数(1) alarm函数原型             alarm(设置信号传送闹钟)所需头文件#include #include 函数说明alarm()用来设置信号SIGALRM...

linux中的信号处理(signal和alarm)

信号是unix中所使用的进程通信的一种最古老的方法.系统使用它来同志一个或多个进程异步事件的发生.linux系统库bits/signum.h对信号名作了定义:linux的大多数信号是提供给内核的,仅有...
  • sambian
  • sambian
  • 2006年04月30日 16:04
  • 31419

linux c alarm(0)的含义

Linux C  alarm函数---请看最后  alarm也称为闹钟函数,它可以再进程中设置一个定时器,当定时器指定的时间到时,它向进城发送SIGALARM信号。要注意的是,一个进程只能有一个闹钟时...

C语言alarm()函数:设置信号传送闹钟

相关函数:signal, sleep 头文件:#include 定义函数:unsigned int alarm(unsigned int seconds); 函数说明:alarm()用来设置信...

linux下的C语言开发(定时器)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     定时器是我们需要经常处理的一种资源。那linux下面的定时器又是怎么一回事呢?其...

Linux内核时钟系统和定时器实现

1. Linux内核时钟系统和定时器实现Linux 2.6.16之前,内核只支持低精度时钟,内核定时器的工作方式: 系统启动后,会读取时钟源设备(RTC, HPET,PIT…),初始化当前系统时间; ...

linux下c/c++实例之六时间测试和定时器

Linux中使用sleep会导致程序一直阻塞,无法交互,同时sleep和usleep有时也不精确,在此总结linux下的部分时间操作。...

Linux C系统编程:信号与定时器的使用

#include #include void do_alarm(int num); int main(void) { //注册一个定时器 if(signa...

Linux C 定时器 篇(一)

最近写程序经用到定时器,每次都是从网上抄一段代码临时替用,每次都了解个皮毛,今天特意收集了一个定时器的应用知识,在这里做一下总结,已备不时之需, 一。采用信号  SIGALRM 方式定时。 常用的四个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux c之alarm函数的使用,定时器的实现
举报原因:
原因补充:

(最多只允许输入30个字)