#include <setjmp.h>
#include <signal.h>
#include <stdio.h>
jmp_buf buf;
void handler(int s)
{
if(SIGINT == s)
{
printf("now got a SIGINT signal/n");
}
longjmp(buf, 1);
}
void main()
{
signal(SIGINT, handler);
if(setjmp(buf))
{
printf("back in main/n");
return;
}
else
{
printf("first time through/n");
}
loop:
goto loop;
}
本文通过一个C语言示例介绍了如何使用setjmp和longjmp进行程序控制,特别是当接收到特定信号(如SIGINT)时如何实现程序状态的回退。
683

被折叠的 条评论
为什么被折叠?



