ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何使用Unix提供的间隔时钟器?(tricker_demo)

2021-03-13 21:35:14  阅读:277  来源: 互联网

标签:timeset set int demo Unix sec new tricker ticker


/ * ticker_demo.c
*演示了使用间隔计时器来生成reqular
*信号,这些信号又被捕获并用于倒计时
* /

#include <stdio.h>
#include <sys/time.h>
#include <signal.h>

int main()
{
void countdown(int);

signal(SIGALRM,countdown);
if(set_ticker(500)==-1)
perror("set_ticker");
else
while(1) pause();
return 0;
}

void countdown(int signum)
{
static int num=10;
printf("%d..",num--);
fflush(stdout);
if(num<0){
printf("DONE!\n");
exit(0);
}
}

/ * [来自set_ticker.c]
* set_ticker(number_of_milliseconds)
*安排间隔计时器定期发布SIGALRM
*错误时返回-1,确定为0
* arg(以毫秒为单位),转换为整秒和微秒
* /

int set_ticker( int n_msecs )
{
struct itimerval new_timeset;
long n_sec, n_usecs;

n_sec = n_msecs / 1000 ; /* int part */
n_usecs = ( n_msecs % 1000 ) * 1000L ; /* remainder */

new_timeset.it_interval.tv_sec = n_sec; /* set reload */
new_timeset.it_interval.tv_usec = n_usecs; /* new ticker value */
new_timeset.it_value.tv_sec = n_sec ; /* store this */
new_timeset.it_value.tv_usec = n_usecs ; /* and this */

return setitimer(ITIMER_REAL, &new_timeset, NULL);
}

 

标签:timeset,set,int,demo,Unix,sec,new,tricker,ticker
来源: https://www.cnblogs.com/shiheyuanfang/p/14530453.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有