Chinaunix首页 | 论坛 | 博客
  • 博客访问: 481268
  • 博文数量: 120
  • 博客积分: 1853
  • 博客等级: 上尉
  • 技术积分: 1177
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-22 22:40
文章分类

全部博文(120)

文章存档

2013年(16)

2012年(104)

分类: LINUX

2012-05-26 18:46:19


点击(此处)折叠或打开

  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <signal.h>
  4. #include <setjmp.h>

  5. jmp_buf env;
  6. int flag = 0;

  7. void sig_alarm(int signo){
  8.     longjmp(env, 1);
  9.     flag = 1;
  10. }

  11. int main(){
  12.     
  13.     int i;

  14.     signal(SIGALRM, sig_alarm);    
  15.     puts("put i:");
  16.     alarm(1);
  17.     if(setjmp(env) != 0){
  18.         return 1;
  19.     }
  20.     if(flag == 0){
  21.         scanf("%d",&i);
  22.     }
  23.     printf("i: %d\n",i);
  24.     puts("over");
  25.     return 0;
  26. }
此处的flag标志、signal和setjmp均需要线程安全的函数替代。
阅读(1105) | 评论(0) | 转发(0) |
0

上一篇:关于线程

下一篇:不带缓存的I/O和标准I/O

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