---
name: "nanosleep"
section: "2"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/nanosleep"
---

# nanosleep(2)

suspend thread execution for an interval measured in nanoseconds

## NAME

**nanosleep** – suspend thread execution for an interval measured in nanoseconds

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<time.h\>**

*int*\

**nanosleep**(*const struct timespec \*rqtp*, *struct timespec \*rmtp*);

## DESCRIPTION

The **nanosleep**() function causes the calling thread to sleep for the amount of time specified in *rqtp* (the actual time slept may be longer, due to system latencies and possible limitations in the timer resolution of the hardware). An unmasked signal will cause **nanosleep**() to terminate the sleep early, regardless of the SA\_RESTART value on the interrupting signal.

## RETURN VALUES

If **nanosleep**() returns because the requested time has elapsed, the value returned will be zero.

If **nanosleep**() returns due to the delivery of a signal, the value returned will be the -1, and the global variable *errno* will be set to indicate the interruption. If *rmtp* is non-NULL, the timespec structure it references is updated to contain the unslept amount (the request time minus the time actually slept).

## ERRORS

The **nanosleep**() call fails if:

- \[EINTR\]

  **nanosleep**() was interrupted by the delivery of a signal.

- \[EINVAL\]

  *rqtp* specified a nanosecond value less than zero or greater than or equal to 1000 million.

## SEE ALSO

[sigsuspend(2)](/sigsuspend/2.md), [sleep(3)](/sleep/3.md)

## STANDARDS

The **nanosleep**() function conforms to IEEE Std 1003.1b-1993 (“POSIX.1b”).
