关于for循环的问题
/*
这个程序是用来测试定时器函数如何控制信号的,在程序的最后用了一个
for(;;); 这个语句,有了这条语句程序就能无限循环下去。而没有它
定时器就不起作用,想知道这个for语句起什么作用,请各位高手帮帮忙,
解开疑惑,先谢了。
*/
#include <signal.h> /* for signal function */
#include <unistd.h>
#include <stdio.h>
#include <sys/time.h> /* for setitimer function */
int sec;
void sigroutine(int signo)
{
switch(signo)
{
case SIGALRM:
printf( "catch a signal--SIGALRM\n ") /*NF*/
break;
case SIGVTALRM:
printf( "catch a signal--SIGVTALRM\n ");
break;
}
return;
}
int main(void)
{
struct itimerval value, value2, ovalue;
sec = 5;
printf( "process id is %d\n ", getpid());
signal(SIGALRM, sigroutine);
signal(SIGVTALRM, sigroutine);
value.it_value.tv_sec = 1;
value.it_value.tv_usec = 0;
value.it_interval.tv_sec = 1;
value.it_interval.tv_usec = 0;
setitimer(ITIMER_REAL, &value, &ovalue);
value2.it_value.tv_sec = 0;
value2.it_value.tv_usec = 500000;
value2.it_interval.tv_sec = 0;
value2.it_interval.tv_usec = 500000;
setitimer(ITIMER_VIRTUAL, &value2, &ovalue);
for(;;);
}
[解决办法]
for(;;); 这个语句,有了这条语句程序就能无限循环下去。而没有它
定时器就不起作用,想知道这个for语句起什么作用
==============================
定时器要起作用,
那么有一点,
就是程序必须在运行状态!
所以,看你的程序,
如果没有这个 for(;;); 无限循环,
这段程序从main开始,很快可以执行完毕,
那么程序执行完毕之后,
所谓的中断还有什么意义?
程序都不运行了,
中断自然也会产生,也无所谓中断响应 ~
[解决办法]
中断自然也会产生
==》
中断自然也不会产生 -_-
在嵌入式中,
常用的就是这样的 无限循环(也有的叫 超级循环)
其目的就是使得程序一直在工作状态。
[解决办法]
呵呵 哪个for就是在等你的中断呢
[解决办法]
简单一句话,就是让程序一直保持运行状态不结束,等待中断!
[解决办法]
你不加for(),单片机都执行完了。
for(;;)就是让单片机一直保持运行着。
操作系统也是个死循环,不然怎么会停在那儿等你的动作?