sleep#
Synopsis#
#include <unistd.h>
unsigned sleep(unsigned seconds);
Status#
Partially implemented
Conformance#
IEEE Std 1003.1-2017
Description#
The sleep() function shall cause the calling thread to be suspended from execution until either the number of
real-time seconds specified by the argument seconds has elapsed or a signal is delivered to the calling thread and
its action is to invoke a signal-catching function or to terminate the process. The suspension time may be longer than
requested due to the scheduling of other activity by the system.
In single-threaded programs, sleep() may make use of SIGALRM. In multithreaded programs, sleep() shall not make
use of SIGALRM and the remainder of this does not apply.
If a SIGALRM signal is generated for the calling process during execution of sleep() and if the SIGALRM signal is
being ignored or blocked from delivery, it is unspecified whether sleep() returns when the SIGALRM signal is
scheduled. If the signal is being blocked, it is also unspecified whether it remains pending after sleep() returns or
it is discarded.
If a SIGALRM signal is generated for the calling process during execution of sleep(), except as a result of a prior
call to alarm(), and if the SIGALRM signal is not being ignored or blocked from delivery, it is unspecified
whether that signal has any effect other than causing sleep() to return.
If a signal-catching function interrupts sleep() and examines or changes either the time a SIGALRM is scheduled to
be generated, the action associated with the SIGALRM signal, or whether the SIGALRM signal is blocked from delivery,
the results are unspecified.
If a signal-catching function interrupts sleep() and calls siglongjmp() or longjmp() to restore an environment
saved prior to the sleep() call, the action associated with the SIGALRM signal and the time at which a SIGALRM
signal is scheduled to be generated are unspecified. It is also unspecified whether the SIGALRM signal is blocked,
unless the signal mask of the process is restored as part of the environment.
Interactions between sleep() and setitimer() are unspecified.
Return value#
If sleep() returns because the requested time has elapsed, the value returned shall be 0. If sleep() returns due
to delivery of a signal, the return value shall be the “unslept” amount
(the requested time minus the time actually slept) in seconds.
Errors#
No errors are defined.
Tests#
Untested
Known bugs#
None