打印
[嵌入式linux]

LINUX 时间程序,请高手指点

[复制链接]
1381|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaogao0730|  楼主 | 2009-9-16 09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
t = time (NULL);
senttime = tm.tm_min;
    while (1)
    {
        t = time (NULL);
        memcpy (&tm, localtime (&t), sizeof (struct tm));
        timer = tm.tm_min - senttime;
        if (timer < 0 )
        {
            timer = timer + 60;
        }
  printf("timer is %d\n",timer);
        if (timer >= timezone)
        {
            sigalrm_fn();
            senttime = tm.tm_min;
        }
        sleep(60);
    };这段代码的含义是什么啊,谢谢啊

相关帖子

沙发
未来是梦| | 2009-9-16 12:39 | 只看该作者
本帖最后由 未来是梦 于 2009-9-16 12:40 编辑

隔timezone 分钟执行一次sigalrm_fn();

由于60分钟tm.tm_min会回到0,
因此用了
if (timer < 0 )
{
       timer = timer + 60;
}
这样,就知道tm.tm_min的分值比senttime小,是因为tm.tm_min过了60分倒回去了;
sleep(60),因为tm.tm_min是60秒变一次,所以也就不必一直循环判断,睡眠,0S会调度其他进程,更有效率;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

26

帖子

1

粉丝