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.
July 25, 2021 | OpenBSD-7.0 |