2

请帮助我,我创建了一个计时器,我想在我的计时器运行时执行特定任务。但是我的代码不允许我在计时器运行时运行任务。它只在定时器运行时休眠。我的代码是

#include<stdio.h>
#include<unistd.h>
#include<sys/time.h>
#include<signal.h>
#include <time.h>
#define INTERVAL 10


void timerhandler(int signum)
{

printf("\ni m manoj doing some specila task\n");

}

int timer()
{
    int i;
    struct itimerval val;
    struct sigaction action;

    sigemptyset(&action.sa_mask);
    action.sa_handler=&timerhandler;
    action.sa_flags=SA_RESTART;
    if(sigaction(SIGALRM,&action,NULL)==-1)
    {   
        perror("sigaction");
        return 1;
    }


    val.it_interval.tv_sec  = 0;
    val.it_interval.tv_usec = 0;
    val.it_value.tv_sec = 3;
    val.it_value.tv_usec    = 0;

    if(setitimer(ITIMER_REAL,&val,0)==-1)

        perror("alarm");



    else 

    for(;;)
    {
    Sleep(10);
    printf("timer val is  %d", &val.it_value.tv_sec );
    printf("\ni m manoj doing normal task\n");

    return 0;
    }
    return 0;
}

int main()
{
timer();
}
4

0 回答 0