| NANOSLEEP(2) | System Calls Manual | NANOSLEEP(2) |
nanosleep — high
resolution sleep
#include
<time.h>
int
nanosleep(const
struct timespec *timeout,
struct timespec
*remainder);
The
nanosleep()
function suspends execution of the calling thread for at least the given
timeout. Delivery of an unmasked signal terminates
this sleep early, even if SA_RESTART is set with
sigaction(2) for the
interrupting signal.
If nanosleep() sleeps the full
timeout without interruption, it returns 0. Unless
remainder is NULL, it is set
to zero.
If nanosleep() is interrupted by a signal,
it returns -1 and the global variable errno is set to
EINTR. Unless remainder is
NULL, it is set to the unslept portion of the
timeout.
Otherwise, nanosleep() returns -1 and the
global variable errno is set to indicate the
error.
nanosleep() will fail if:
EINTR]EINVAL]EFAULT]EFAULT]NULL and
points to memory that is not a valid part of the process address
space.The nanosleep() function conforms to
IEEE Std 1003.1-2008 (“POSIX.1”).
The predecessor of this system call,
sleep(), first appeared in
Version 2 AT&T UNIX. It was removed in
Version 7 AT&T UNIX and replaced with a C
library implementation based on
alarm(3) and
signal(3).
The nanosleep() function first appeared in
IEEE Std 1003.1b-1993
(“POSIX.1b”).
This implementation of nanosleep() first
appeared in NetBSD 1.3 and was ported to
OpenBSD 2.1.
| March 31, 2022 | openbsd |