发新话题
打印

【求助】急急--请大家帮我看看(有关设置interval timer出现的问题)

【求助】急急--请大家帮我看看(有关设置interval timer出现的问题)

大家帮我看看
在这个程序中我设置了 interval timer(ITIMER_REAL)
但是看不道预期的值
到底是怎么了?
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <signal.h>
#include <stdlib.h>

int main(void)
{
void countdown(int);
int set_ticker(int);
signal(SIGALRM,countdown);
if ( set_ticker(500) == -1)
perror("set_ticker");
else
while(1)
pause();

return 0;
}

void countdown(int signum)
{
static int num = 10;
printf("%d..",num--);
fflush(stdout);
if (num < 0){
printf("DONE!\n");
exit(0);
}
}

/*
*se_ticker(num_of_miliseconds)
*arranges for interval timer to issue SIGALARMs at regular intervals
*retrun -1 on error,0 ok
*arg in miliseconds,converted into whole seconds and micorseconds
*note:set_ticker(0) turns off ticker  
*/

int set_ticker(int n_msecs)
{
struct itimerval new_timeset;
long n_sec,n_usecs;
n_sec = n_msecs / 1000;
n_usecs = (n_msecs % 1000) * 1000;
new_timeset.it_interval.tv_sec = n_sec; /*int part */
new_timeset.it_interval.tv_usec = n_usecs;

new_timeset.it_value.tv_sec = n_sec;
new_timeset.it_value.tv_sec = n_usecs;
return setitimer(ITIMER_REAL,&new_timeset,NULL);
}

我的问题是设置了interval timer却看不到预期植
预期值应该是这样的:
10..9..8..7..6..5..4..3..2..1..DONE!


我把程序改为以下这样没有问题可以看到预期值 是不是我设置的interval timer有问题?

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

int main(void)
{
void countdown(int);
signal(SIGALRM,countdown);
while(1){
alarm(1);
pause();
}
return 0;
}

void countdown(int signum)
{
static int num = 10;
printf("%d..",num--);
fflush(stdout);
if (num < 0){
printf("DONE!\n");
exit(0);
}
}


系统平台:RHEL4
编译环境:gcc 3.2
编译所执行命令:
gcc -Wall a.c -o a      

TOP

发新话题