LinuxSir.cn,穿越时空的Linuxsir!

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

请教:linux定时器的函数怎么用啊

[复制链接]
发表于 2005-11-5 11:23:42 | 显示全部楼层 |阅读模式
老师布置了一个网络程序的实验
其中要用到定时器
不知道linux下的定时器函数怎么使用啊
我在time.h里找到有两个函数应该是一个是timer_creat 另一个是timer_delete
但是其中的参数不知道怎么使用啊
请大侠给的例子好吗
thanks very much
 楼主| 发表于 2005-11-5 11:25:00 | 显示全部楼层
已经百度过了也google了
但是没有搜到啊
回复 支持 反对

使用道具 举报

发表于 2005-11-5 11:40:31 | 显示全部楼层
用select()函数可以实现定时,而且可以将时间精确到毫秒级
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-5 11:53:11 | 显示全部楼层
是吗 但是我想实现这样的功能
就是 起动定时器以后 程序还可以执行
如果到时间后 定时器会给这个程序发一个事件之类的
这个程序收到后可以继续执行
如果收不到这个定时器的消息 但是有别的消息也可以继续执行

多谢大侠了
回复 支持 反对

使用道具 举报

发表于 2005-11-5 12:22:32 | 显示全部楼层
Post by anuode
用select()函数可以实现定时,而且可以将时间精确到毫秒级

是微秒吧?
回复 支持 反对

使用道具 举报

发表于 2005-11-5 12:24:02 | 显示全部楼层
Post by nohymn
是吗 但是我想实现这样的功能
就是 起动定时器以后 程序还可以执行
如果到时间后 定时器会给这个程序发一个事件之类的
这个程序收到后可以继续执行
如果收不到这个定时器的消息 但是有别的消息也可以继续执行

多谢大侠了

man alarm
回复 支持 反对

使用道具 举报

发表于 2005-11-5 13:38:03 | 显示全部楼层

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <sys/time.h>
  4. #include <stdlib.h>
  5. #include <signal.h>
  6. int count = 0;
  7. void set_timer()
  8. {
  9.         struct itimerval itv, oldtv;
  10.         itv.it_interval.tv_sec = 5;
  11.         itv.it_interval.tv_usec = 0;
  12.         itv.it_value.tv_sec = 5;
  13.         itv.it_value.tv_usec = 0;

  14.         setitimer(ITIMER_REAL, &itv, &oldtv);
  15. }

  16. void sigalrm_handler(int sig)
  17. {
  18.         count++;
  19.         printf("timer signal.. %d\n", count);
  20. }

  21. int main()
  22. {
  23.         signal(SIGALRM, sigalrm_handler);
  24.         set_timer();
  25.         while (count < 1000)
  26.         {}
  27.         exit(0);
  28. }

复制代码
回复 支持 反对

使用道具 举报

发表于 2005-11-5 14:18:47 | 显示全部楼层
Post by haohao_h
是微秒吧?

struct timeval{
      long tv_sec;         /*seconds*/
      long tv_usec;       /*and microseconds*/
};我还以为是ms呢,理解成毫秒了!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-10 09:33:25 | 显示全部楼层
真是多谢各位高手了啊
回复 支持 反对

使用道具 举报

发表于 2005-11-10 12:10:22 | 显示全部楼层
我想这种情况下用alarm就可以吧!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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