LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2844|回复: 7

请教关于linux c编程中定时器的使用。

[复制链接]
发表于 2004-8-18 10:54:50 | 显示全部楼层 |阅读模式
我想写一个程序,两个函数A,B。

想在A工作时,开启一个定时器,定时5秒,
然后A继续工作,定时时间到后,自动去执行B。
在B中,关定时器,工作.....,开定时器,返回。
然后A继续进行工作,直到下次定时时间到。

定时器有没有什么库函数可以使用?

看过一些感觉都不合适。
请各位指点,谢谢。
发表于 2004-8-18 11:16:38 | 显示全部楼层
 楼主| 发表于 2004-8-18 11:37:08 | 显示全部楼层
谢谢了,非常有用。
还有一些问题要请教一下(^_^,我比较菜的)
[PHP]struct timer_list {
    struct list_head list;
    unsigned long expires;
    unsigned long data;
    void (*function)(unsigned long);
};[/PHP]
这里面的struct list_head list要自己定义吗?
expires一个单位是多长时间?

最初由 lucifer 发表
http://www.linuxforum.net/forum/ ... 5&o=7&part=
这个可以吗
发表于 2004-8-18 11:46:52 | 显示全部楼层
google吧,找个现成的代码自己改改
发表于 2004-8-18 12:28:09 | 显示全部楼层
如果不要求很精确的话,用 alarm() 和 signal() 就够了

  1. /*
  2. * Example for alarm.
  3. */
  4. #include <stdio.h>
  5. #include <unistd.h>
  6. #include <signal.h>

  7. void sigalrm_fn(int sig)
  8. {
  9.         /* Do something */
  10.         printf("alarm!\n");

  11.         alarm(2);
  12.         return;
  13. }

  14. int main(void)
  15. {
  16.         signal(SIGALRM, sigalrm_fn);
  17.         alarm(2);

  18.         /* Do someting */
  19.         while(1) pause();
  20. }
复制代码
 楼主| 发表于 2004-8-18 14:14:14 | 显示全部楼层
it's the very thing i needed,3x!!
^_^:thank :thank
 楼主| 发表于 2004-8-18 14:53:10 | 显示全部楼层
刚才在man alarm中看到alarm和sleep混用会引起冲突。
而我在B函数中要用到延时,该用什么呢?

select可不可以?
发表于 2004-8-18 15:44:02 | 显示全部楼层
所谓冲突主要指当 alarm() 时间到的时候 sleep() 会被唤醒,如果你能忍受这样的结果就可以这样用,如果不能,只好用别的办法了

select() 也会被 alarm() 唤醒,所以不能解决这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表