一个有趣的 关于定时器的问题
#include <sys/time.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#define PROMPT "时间已经过去了两秒钟\n\a"
char *prompt=PROMPT;
unsigned int len;
void prompt_info(int signo)
{
write(STDERR_FILENO,prompt,len);
}
void init_sigaction(void)
{
struct sigaction act;
act.sa_handler=prompt_info;
act.sa_flags=0;
sigemptyset(&act.sa_mask);
sigaction(SIGPROF,&act,NULL);
}
void init_time()
{
struct itimerval value;
value.it_value.tv_sec=2;
value.it_value.tv_usec=0;
value.it_interval=value.it_value;
setitimer(ITIMER_PROF,&value,NULL);
}
int main()
{
int i;
len=strlen(prompt);
init_sigaction();
init_time();
while(1)
{
i++;
}
exit(0);
}
程序运行时,每隔两秒终端上就会显示:
"时间已经过去了两秒钟"
但是如果将while循环中的i++;改为printf("hi\n");
终端上就只会显示"hi"
而没有"时间已经过去了两秒钟"
这是为什么,哪位大侠可以解释?