- 论坛徽章:
- 0
|
1 #include<setjmp.h>
2 #include<signal.h>
3 #include<unistd.h>
4 static void sig_alrm(int);
5 static jmp_buf env_alrm;
6
7 int main(void)
8 {
9 int n;
10 char line[10];
11
12 if(signal(SIGALRM,sig_alrm)==SIG_ERR)
13 printf("signal error!\n");
14 if(setjmp(env_alrm)!=0)
15 printf("read timeout!\n");
16 alarm(10);
17 if((n= read(STDIN_FILENO,line,10))<0)
18 printf("read error!\n");
19 alarm(0);
20 write(STDOUT_FILENO,line,n);
21 exit(0);
22 }
23 static void sig_alrm(int signo)
24 {
25 longjmp(env_alrm,1);
26 }
这个程序再 longjmp跳回去之后,alarm(10)为什么不再次产生信号。为什么这个程序不是循环的? 大神们。 |
|