弹球游戏2--间隔计时器,信号

来源:互联网 发布:知乎推出的职业介绍所 编辑:程序博客网 时间:2024/06/11 04:02

 间隔计时器(interval timer)

     int setitimer(int which, const struct itimerval *new_value,
                    struct itimerval *old_value);

    系统为每个进程提供了三个间隔时钟,当其中一个时间累计满,就发送一个信号到进程并且间隔时钟重置。每个计时器有两个设置:初始时间(it_value)和重复间隔(it_interval)。

ITIMER_REAL 计量真实事件,不管进程在用户态还是和心态。当这个计时器用尽,发送SIGALRM消息。

ITIMER_VIRTUAL 只计时用户态,当虚拟计时器用尽,发送SIGVTALRM消息。

ITIMER_PROF计时用户态和和心态时间,当计时器用尽,发送SIGPROF消息。


函数调用成功,返回0,否则返回-1。获取和设置间隔计时器用到的结构:

  struct itimerval {
        struct timerval it_interval;     /* next vale */
        struct timerval it_value;    /* current value */
    };
    
    struct timerval {
        long tv_sec;            /* seconds */
        long tv_usec;            /* microseconds */   

};

   
    信号

     typedef void (*sighander_t)(int);
    sighander_t signal(int signum, sighandler_t handler);

    signal()布置signum到handler,handler是SIG_IGN,SIG_DFL,或者是程序自定义的函数。当信号signum发送到进程,将发生下面的事情:
    如果布置到SIG_IGN,信号会被忽略。
    如果布置到SIG_DFL,信号会被默认的方式处理。
    如果布置到函数,信号会被抓住,并调用handler,并带着signum参数。

 

原创粉丝点击