Chinaunix首页 | 论坛 | 博客
  • 博客访问: 279024
  • 博文数量: 109
  • 博客积分: 2116
  • 博客等级: 大尉
  • 技术积分: 1062
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 15:38
文章分类

全部博文(109)

文章存档

2013年(2)

2011年(16)

2010年(90)

2009年(1)

我的朋友

分类: 嵌入式

2010-08-10 11:07:54

今天完成一个信号的使用。Linux内部定时器。

 

原理

三个定时器:(递减定时)

1 ITIMER_REAL-SIGALRM

2 ITIMER_VIRTUAL-SIGVTALRM

3 ITIMER_PROF-SIGPROF

 

步骤:

1 在宿主机编辑文件并交叉编译(MAKE的写法)。

2 在开发板的终端进行执行。

 

现象:

宿主机下

目标板下

 

源代码来自周立功:

#include

#include

#include

 

int limit=10;

void timeout_info(int signo)

{

    if(limit==0)

    {

        printf("Sorry,time limit reached.\n");

        exit(0);

    }

    printf("only %d seconds left.\n",limit--);

}

 

void init_sigaction(void)

{

    struct sigaction act;

 

    act.sa_handler=timeout_info;

    act.sa_flags=0;

    sigemptyset(&act.sa_mask);

 

    sigaction(SIGPROF,&act,NULL);

}

 

void init_time(void)

{

    struct itimerval val;

    val.it_value.tv_sec=1;

    val.it_value.tv_usec=0;

    val.it_interval=val.it_value;

    setitimer(ITIMER_PROF,&val,NULL);  

}

 

int main(void)

{

    init_sigaction();

    init_time();

    printf("You have only 10 seconds for thinking.\n");

    timeout_info(10);

    while(1);

    exit(0);

}

阅读(327) | 评论(0) | 转发(0) |
0

上一篇:进程

下一篇:线程

给主人留下些什么吧!~~