首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于for循环的有关问题

2012-02-22 
关于for循环的问题/*这个程序是用来测试定时器函数如何控制信号的,在程序的最后用了一个for()这个语句,

关于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(;;)就是让单片机一直保持运行着。


操作系统也是个死循环,不然怎么会停在那儿等你的动作?

热点排行