您的位置:首页 > 其它

漂亮的信号捕捉

2017-05-09 00:00 141 查看
#include <unistd.h>;
#include <signal.h>;
#include <stdlib.h>;
#include <setjmp.h>;
#include <sys/signal.h>;

static jmp_buf jmpbuf;

void int_proc(int sig) {
siglongjmp(jmpbuf, 1);
}

int main() {
int c, i;

int m;
m=sigsetjmp(jmpbuf,1);
if (m==1) printf("\nInterrupt\n";
else if(m==2) printf("\ninvalid input\n";

signal(SIGINT, int_proc);
printf("Choose task a or b:";
c = getchar();
while(getchar()!='\n')
continue;
printf("you select\n";

switch (c) {
case 'a':
for (i = 0; i < 10; i++) {
printf("..%3d%%", (i+1)*10);
sleep(2);
}
break;
case 'b':
for (i = 0; i < 10; i++) {
printf("..%3d%%", (i+1)*10);
sleep(1);
}
break;
default:
siglongjmp(jmpbuf, 2);
}
printf("End task\n";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: