- #include <unistd.h>
- #include <stdio.h>
- #include <signal.h>
- #include <setjmp.h>
- jmp_buf env;
- int flag = 0;
- void sig_alarm(int signo){
- longjmp(env, 1);
- flag = 1;
- }
- int main(){
-
- int i;
- signal(SIGALRM, sig_alarm);
- puts("put i:");
- alarm(1);
- if(setjmp(env) != 0){
- return 1;
- }
- if(flag == 0){
- scanf("%d",&i);
- }
- printf("i: %d\n",i);
- puts("over");
- return 0;
- }
此处的flag标志、signal和setjmp均需要线程安全的函数替代。
阅读(1105) | 评论(0) | 转发(0) |