NANOSLEEP(2) BSD System Calls Manual NANOSLEEP(2)
nanosleep -- high resolution sleep
nanosleep(const struct timespec *timeout, struct timespec *remainder);
nanosleep() suspends execution of the calling process for the duration
specified by timeout. An unmasked signal will cause it to terminate the
sleep early, regardless of the SA_RESTART value on the interrupting sig-
If the nanosleep() function returns because the requested duration has
elapsed, the value returned will be zero.
If the nanosleep() function returns due to the delivery of a signal, the
value returned will be -1, and the global variable errno will be set to
indicate the interruption. If remainder is non-null, the timespec struc-
ture it references is updated to contain the unslept amount (the
requested duration minus the duration actually slept).
If any of the following conditions occur, the nanosleep() function shall
return -1 and set errno to the corresponding value.
[EINTR] nanosleep was interrupted by the delivery of a signal.
[EINVAL] timeout specified a nanosecond value less than zero or
greater than 1000 million, or a second value less than
zero or greater than 100 million.
[EFAULT] Either timeout or remainder 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(), appeared in Version 3 AT&T
UNIX, but was removed when alarm(3) was introduced into Version 7 AT&T
UNIX. The nanosleep() system call has been available since NetBSD 1.3
and was ported to OpenBSD 2.1 and FreeBSD 3.0.
BSD March 28, 2017 BSD