#include "apue.h"
#include <setjmp.h>
/*
一个简单的计时器代码,倒计时10秒就会推出程序
*/
static jmp_buf env;
static void arm(int sig){
longjmp(env,1);
}
int
main(void)
{
char buf[20];
int n;
signal(SIGALRM,arm);
if ( setjmp(env)!=0)
{
perror("read timeout");
exit(1);
}
alarm(5);
if((n=read(STDIN_FILENO,buf,20))<0){
perror("read error");
}
alarm(0);
write(STDOUT_FILENO,buf,n);
exit(0);
}
运行5秒没有输出之后会得到以下结果:
kali@kali:~/code$ g++ 1.cpp
kali@kali:~/code$ ./a.out
read timeout: Success
kali@kali:~/code$