http://blog.sina.com.cn/s/blog_6a1837e90100uhl3.html
所需头文件
#include<unistd.h>
函数原型
unsigned int alarm(unsigned int seconds)
函数参数
seconds:指定秒数
函数返回值
成功:如果调用此alarm()前,进程已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0。
出错:-1
代码
#include<unistd.h>
#include<signal.h>
void handler()
{
}
void main()
{
}
结果:刚开始在main中执行一次,然后每隔5秒执行一次handler()
Hello
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
Hello
sleep 6 ...
sleep 7 ...
sleep 8 ...
sleep 9 ...
sleep 10 ...
Hello
sleep 11 ...
sleep 12 ...
sleep 13 ...
sleep 14 ...
sleep 15 ...
Hello
sleep 16 ...
sleep 17 ...
sleep 18 ...
sleep 19 ...
sleep 20 ...
Hello
好了,看看我自己改编后的代码吧!有助于更好得理解
- #include <stdlib.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <signal.h>
- #define SLEEP_TIME 6
- int time_out;
- void handler()
- {
- printf("Wake up!\n");
- time_out = 1;
- }
- int main()
- {
- int i;
- signal(SIGALRM, handler); //让内核做好准备,一旦接受到SIGALARM信号,就执行 handler
- alarm(SLEEP_TIME);//设置闹钟,准备睡觉
- printf("Set alarm!\n");
- for(i = 1;i < 2 * SLEEP_TIME && !time_out; i++)
- {
- printf("sleep %d ...\n",i);
- sleep(1);
- /* if (i == SLEEP_TIME / 2)*/
- /* {*/
- /* printf("Turn off the alarm!\n");//我中途醒了,不需要闹钟,把闹钟关闭*/
- /* alarm(0);*/
- /* }*/
- }
- return 0;
- }
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#define SLEEP_TIME 6
int time_out;
void handler()
{
printf("Wake up!\n");
time_out = 1;
}
int main()
{
int i;
signal(SIGALRM, handler); //让内核做好准备,一旦接受到SIGALARM信号,就执行 handler
alarm(SLEEP_TIME);//设置闹钟,准备睡觉
printf("Set alarm!\n");
for(i = 1;i < 2 * SLEEP_TIME && !time_out; i++)
{
printf("sleep %d ...\n",i);
sleep(1);
/* if (i == SLEEP_TIME / 2)*/
/* {*/
/* printf("Turn off the alarm!\n");//我中途醒了,不需要闹钟,把闹钟关闭*/
/* alarm(0);*/
/* }*/
}
return 0;
}
本文介绍了如何使用alarm函数来设置进程的定时闹钟,包括所需头文件、函数原型及参数说明。通过示例代码展示了如何让进程每间隔一定时间执行特定函数,以及如何在该函数内部重新设置闹钟实现循环定时。
534

被折叠的 条评论
为什么被折叠?



