sleep - suspend execution for an interval of time
#include <unistd.h> unsigned int sleep(unsigned int seconds);
The sleep() function will 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.
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 process' signal mask is restored as part of the environment.
Interactions between sleep() and any of setitimer(), ualarm() or usleep() are unspecified.
If sleep() returns because the requested time has elapsed, the value returned will be 0. If sleep() returns because of premature arousal due to delivery of a signal, the return value will be the "unslept" amount (the requested time minus the time actually slept) in seconds.
No errors are defined.
alarm(), getitimer(), nanosleep(), pause(), sigaction(), sigsetjmp(), ualarm(), usleep(), <unistd.h>.
Derived from Issue 1 of the SVID.