您的位置:

定时linuxc语言,C语言定时

本文目录一览:

求linux下用c语言编写的定时器程序

定时器就相当于系统每隔一段时间给进程发一个定时信号。在linux里面有一种进程中信息传递的方法,那就是信号,定时器程序就是需要定义一个信号处理函数。利用定时器产生的一个信号SIGALRM信号,在收到该信号同时会调用do_alarm函数。这也就类似单片机的定时中断,当定时到了,就跳到中断服务函数里去执行相应的程序。 Linux操作系统为每一个进程提供了3个内部间隔计时器. ITIMER_REAL:减少实际时间.到时的时候发出SIGALRM信号. ITIMER_VIRTUAL:减少有效时间(进程执行的时间).产生SIGVTALRM信号. ITIMER_PROF:减少进程的有效时间和系统时间(为进程调度用的时间).这个经常和上面一个使用用来计算系统内核时间和用户时间.产生SIGPROF信号. 代码如下:pre t="code" l="cpp"#include stdio.h

#include time.h

#include sys/time.h

#include stdlib.h

#include signal.h

static int count = 0;

static struct itimerval oldtv;

void set_timer()

{

struct itimerval itv;

itv.it_interval.tv_sec = 1;

itv.it_interval.tv_usec = 0;

itv.it_value.tv_sec = 1;

itv.it_value.tv_usec = 0;

setitimer(ITIMER_REAL, itv, oldtv);

}

void signal_handler(int m)

{

count ++;

printf("%d\n", count);

}

int main()

{

signal(SIGALRM, signal_handler);

set_timer();

while(count 10000);

exit(0);

return 1;

}

linux下C语言定时器(求高人指点)

可以用alarm信号做:

alarm(设置信号传送闹钟)

相关函数 signal,sleep

表头文件 #includeunistd.h

定义函数 unsigned int alarm(unsigned int seconds);

函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。

返回值返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。

#includeunistd.h

#includesignal.h

void handler() {

//这里读跳变次数

}

main()

{

int i;

signal(SIGALRM,handler);//这里设置时钟信号的响应函数

alarm(1); //这里设置每一秒钟发送一个时钟信号

}

linux下C语言有没有定时调用的函数

你是指延迟函数还是定时调用,比如到11:12:13秒执行某个函数?

如果是延时函数用

usleep(usec); // 微妙

sleep(sec);    // 秒

如果是定时执行的话,你只能开个线程或while,每隔1s判断下当前系统时间,

struct   tm     *ptm; 

long       ts; 

int         y,m,d,h,n,s; 

ts   =   time(NULL); 

ptm   =   localtime(ts); 

y   =   ptm- tm_year+1900;     //年 

m   =   ptm- tm_mon+1;             //月 

d   =   ptm- tm_mday;               //日 

h   =   ptm- tm_hour;               //时 

n   =   ptm- tm_min;                 //分 

s   =   ptm- tm_sec;                 //秒

照着上面的格式组成字符串进行判断,到点了就执行就可以了