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 + -
显示快捷键?