NAME
nanosleep —
high resolution sleep
SYNOPSIS
#include
<time.h>
int
nanosleep(const
struct timespec *timeout,
struct timespec
*remainder);
DESCRIPTION
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.
RETURN VALUES
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.
ERRORS
nanosleep() will fail if:
- [
EINTR] - The call is interrupted by the delivery of a signal.
- [
EINVAL] - timeout specifies a nanosecond value less than zero or greater than or equal to one billion, or a second value less than zero.
- [
EFAULT] - timeout points to memory that is not a valid part of the process address space.
- [
EFAULT] - remainder is not
NULLand points to memory that is not a valid part of the process address space.
SEE ALSO
STANDARDS
The nanosleep() function conforms to
IEEE Std 1003.1-2008 (“POSIX.1”).
HISTORY
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.