📄 _sleep.c
字号:
/* sleep(3) * * Sleep(n) pauses for 'n' seconds by scheduling an alarm interrupt. * * Changed to conform with POSIX Terrence W. Holm Oct. 1988 */#include <lib.h>#define sleep _sleep#include <signal.h>#include <unistd.h>FORWARD _PROTOTYPE( void _alfun, (int signo) );PRIVATE void _alfun(signo)int signo;{/* Dummy signal handler used with sleep() below. */}PUBLIC unsigned sleep(secs)unsigned secs;{ unsigned current_secs; unsigned remaining_secs; struct sigaction act, oact; sigset_t ss; if (secs == 0) return(0); current_secs = alarm(0); /* is there currently an alarm? */ if (current_secs == 0 || current_secs > secs) { act.sa_flags = 0; act.sa_mask = 0; act.sa_handler = _alfun; sigaction(SIGALRM, &act, &oact); alarm(secs); sigemptyset(&ss); sigsuspend(&ss); remaining_secs = alarm(0); sigaction(SIGALRM, &oact, (struct sigaction *) NULL); if (current_secs > secs) alarm(current_secs - (secs - remaining_secs)); return(remaining_secs); } /* Current_secs <= secs, ie. alarm should occur before secs. */ alarm(current_secs); pause(); remaining_secs = alarm(0); alarm(remaining_secs); return(secs - (current_secs - remaining_secs));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -