sleep.c
来自「Linux.Programming.by example 的源代码绝对经典」· C语言 代码 · 共 41 行
C
41 行
#include <signal.h>#include <setjmp.h>static jmp_buf jmp;sleep(n)unsigned n;{ int sleepx(); unsigned altime; int (*alsig)() = SIG_DFL; if (n==0) return; altime = alarm(1000); /* time to maneuver */ if (setjmp(jmp)) { signal(SIGALRM, alsig); alarm(altime); return; } if (altime) { if (altime > n) altime -= n; else { n = altime; altime = 1; } } alsig = signal(SIGALRM, sleepx); alarm(n); for(;;) pause(); /*NOTREACHED*/}staticsleepx(){ longjmp(jmp, 1);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?