定时产生信号

定时产生信号:alarm()函数

#include <unistd.h>

unsigned int alarm(unsigned int seconds);
  • 功能:

    设置定时器(闹钟)。在指定seconds后(自然计时法),内核会给当前进程发送14 SIGALRM信号。进程收到该信号,默认动作终止。每个进程都有且只有唯一的一个定时器。

  • 取消定时器alarm(0),返回旧闹钟余下秒数。

  • 参数:
    seconds:指定的时间,以秒为单位

  • 返回值:
    返回0或剩余的秒数

周期定时产生信号:setitimer()函数

#include <sys/time.h>

int setitimer(int which,  const struct itimerval *new_value, struct itimerval *old_value);
  • 功能:设置定时器(闹钟)。 可代替alarm函数。精度微秒us,可以实现周期定时。

  • 参数:

    • which:指定定时方式

      • a) 自然定时:ITIMER_REAL
      • b) 虚拟空间计时(用户空间):ITIMER_VIRTUAL ,只计算进程占用cpu的时间
      • c) 运行时计时(用户 + 内核):ITIMER_PROF ,计算占用cpu及执行系统调用的时间
    • new_valuestruct itimerval*, 负责设定timeout时间

      struct itimerval 
      {
          struct timerval it_interval; // 闹钟触发周期
          struct timerval it_value;    // 闹钟触发时间,几秒后发送信号
      };
      
      struct timeval 
      {
          long tv_sec;            // 秒
          long tv_usec;           // 微秒
      }
      
    • old_value: 存放旧的timeout值,一般指定为NULL

  • 返回值:
    成功:0
    失败:-1

posted @ 2022-01-19 15:19  hellozhangjz  阅读(67)  评论(0)    收藏  举报