- 论坛徽章:
- 0
|
- #include <setjmp.h>;
- #include <signal.h>;
- #include <stdio.h>;
- #include <stdlib.h>;
- #include <unistd.h>;
- jmp_buf buf;
- void handler(int s)
- {
- if (s == SIGINT )
- printf("now got a EXIT signal\n");
- printf("input 'y' or 'n' for choice!\n");
- switch(getc(stdin))
- {
- case 'y': exit(0);
- case 'n': longjmp(buf,1);break;
- default: exit(0);
- }
- }
- int main()
- {
- if(setjmp(buf))
- printf("back in main\n");
- else
- printf("first time in main\n");
- signal(SIGINT,handler);
- for(;;)
- {
- printf("--\n");
- sleep(5);
- }
-
- return 0;
-
- }
复制代码
以前从没接触过这两个函数,试着写了一个!但遇到这样的问题,当我输入y或者n后正常了,但当我输入n返回主函数,再次CTRL+C的时候,按道理应该继续由
void handler(int s)接管,但却按照默认的退出了!是我哪里考虑错了,请大家指教! |
|