nanosleep
![]() |
![]() |
![]() |
![]() |
nanosleep()
Suspend a thread until a timeout or signal occurs
Synopsis:
#include <time.h>
int nanosleep( const struct timespec* rqtp,
struct timespec* rmtp );
Arguments:
- rqtp
- A pointer to a timespec structure that specifies the time interval for which you want to suspend the thread.
- rmtp
- NULL, or a pointer to a timespec structure where the function can store the amount of time remaining in the interval (the requested time minus the time actually slept).
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The nanosleep() function causes the calling thread to be suspended from execution until either:
- The time interval specified by the rqtp argument has elapsed
Or
- A signal is delivered to the thread, and the signal's action is to invoke a signal-catching function or terminate the process.
![]() |
The suspension time may be longer than requested because the argument value is rounded up to be a multiple of the system timer resolution (see the Tick, Tock: Understanding the Neutrino Microkernel's Concept of Time chapter of the QNX Neutrino Programmer's Guide) or because of scheduling and other system activity. |
Returns:
- 0
- The requested time has elapsed.
- -1
- The nanosleep() function was interrupted by a signal (errno is set).
Errors:
- EAGAIN
- All timers are in use. You'll have to wait for a process to release one.
- EFAULT
- A fault occurred trying to access the buffers provided.
- EINTR
- The nanosleep() function was interrupted by a signal.
- EINVAL
- The number of nanoseconds specified by the tv_nsec member of the timespec structure pointed to by rqtp is less than zero or greater than or equal to 1000 million.
Classification:
| Safety: | |
|---|---|
| Cancellation point | Yes |
| Interrupt handler | No |
| Signal handler | No |
| Thread | Yes |
See also:
delay, errno, clock_getres(), clock_gettime(), clock_settime(), sleep(), timer_create(), timer_delete(), timer_gettime(), timer_settime(), timespec, usleep()
![]() |
![]() |
![]() |
![]() |

![[Previous]](../prev.gif)
![[Contents]](../contents.gif)
![[Index]](../keyword_index.gif)
![[Next]](../next.gif)

