首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

应用longjmp,带超时限制调用read

2012-09-06 
使用longjmp,带超时限制调用read//Set max timeout when block reading// by Jay Zhang#include stdio.h

使用longjmp,带超时限制调用read

//Set max timeout when block reading// by Jay Zhang#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>#include <setjmp.h>static void sig_alarm(int);static jmp_buf env_alarm;#define MAXLINE1024int main(void){int n;char line[MAXLINE];if(signal(SIGALRM, sig_alarm) == SIG_ERR) {printf("signal SIGALARM error\n");return -1;}if(setjmp(env_alarm) != 0) {printf("read timeout\n");return 0;}alarm(10);if((n = read(STDIN_FILENO, line, MAXLINE)) < 0) {printf("read error\n");}alarm(0);write(STDOUT_FILENO, line, n);return 0;}static voidsig_alarm(int signo){longjmp(env_alarm, 1);}

热点排行