Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119159
  • 博文数量: 41
  • 博客积分: 1695
  • 博客等级: 上尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-21 22:50
文章分类

全部博文(41)

文章存档

2010年(1)

2007年(23)

2006年(17)

我的朋友

分类: C/C++

2007-04-14 01:52:32

longjmp会回到setjmp处重新继续执行。                 

#include <setjmp.h>
#include <stdio.h>
#include <signal.h>

jmp_buf jmpbuf;
void sig_alrm(int signo);

int main()
{
    int i;
    if(signal(SIGALRM, sig_alrm) == SIG_ERR)
        perror("signal SIGALRM error!\n");
    setjmp(jmpbuf) ;
    alarm(3);
    for(i=0; i<5; i++)
    {
        printf("sleep %d\n", i+1);
        sleep(1);
    }
}
void sig_alrm(int signo)
{
    longjmp(jmpbuf, 1);
    return ;
} /* ----- end of function sig_alrm ----- */
 

代码的执行结果是:
sleep 1
sleep 2
sleep 1
sleep 2
sleep 3
sleep 4
sleep 5

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

上一篇:用户设置ID

下一篇:C 宏定义的返回值

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