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

来源:互联网 发布:阿里云服务器ip地址 编辑:程序博客网 时间:2024/05/29 16:30
#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);//定时1sif (count == 5) {alarm(0);isExit = 0;}return;}//linux定时器的实现int main(int argc, char *argv[]) {signal(SIGALRM, timer);//执行定时器函数printf("wait 1s\n");alarm(1); //定时1swhile (isExit){};printf("finish\n");return 0;}

0 0