软讯网络 > 编程语言 > C/C++ > setjmp与longjmp
【标 题】:setjmp与longjmp
【关键字】:
setjmp,longjmp
【来 源】:http://www.cublog.cn/u/25334/showart.php?id=277637
setjmp与longjmp

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