定时函数setitimer()

定时函数setitimer() 

2012-08-25 01:24:43|  分类: linux |  标签:时间  |字号 订阅

//struct itimerval
//{
// struct timeval it_interval; /* 下次定时取值 */
// struct timeval it_value; /* 本次定时设置值 */
//};
//struct timeval
//{
// long tv_sec; /* 秒(1000000微秒) */
// long tv_usec; /* 微妙 */
//}

//which的值
//这三种定时器定时完成时给进程发送的信号各不相同,
//ITIMER_REAL类定时器发送SIGALRM信号,
//ITIMER_VIRT类定时器发送SIGVTALRM信号,
//ITIMER_PROF类定时器发送SIGPROF信号。


//itimerval结构中的it_value是代表首次定时的时间,
//而it_interval代表下一次定时的时间,执行完第一次之后,
//it_interval中的时间会赋值给it_value,周而复始。
//如果it_value值被设置为0,则定时器停止定时;
//如果it_value值不为0但it_interval值为0,则定时器在一次定时后终止。
//setitimer执行成功返回0,否则返回-1

//参数ovalue
//该参数可以使用空值NULL,如果不为空的话,返回的是上一个时刻的定时器状态。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <time.h>
#include <sys/time.h>

int
setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);


int
n=0;
void
doAction(int sig)//你要做的事情
{
    printf("do like this %d\n",n++);
}
void
setMyTimer(int val)
{

    struct
itimerval value;
    value.it_value.tv_sec=val;
    value.it_value.tv_usec=0;
    value.it_interval.tv_sec=val; //val秒
    value.it_interval.tv_usec=0;
    signal(SIGALRM, doAction);
    int
tm = setitimer(ITIMER_REAL,&value,NULL);
    printf("tm: %d\n",tm);
    while
(
1) {
        getchar();
    }
}


int
main( int
argc, char **argv )
{

    int
val;

    scanf("%d",&val);
    setMyTimer(val);
    return
0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值