---
name: "sleep"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/sleep/3"
---

# sleep(3)

sleep for a specified number of seconds

## NAME

sleep - sleep for a specified number of seconds

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <unistd.h>
```

**unsigned int sleep(unsigned int** *seconds***);**

## DESCRIPTION

**sleep**() causes the calling thread to sleep either until the number of real-time seconds specified in *seconds* have elapsed or until a signal arrives which is not ignored.

## RETURN VALUE

Zero if the requested time has elapsed, or the number of seconds left to sleep, if the call was interrupted by a signal handler.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **sleep**() | Thread safety | MT-Unsafe sig:SIGCHLD/linux |

## VERSIONS

On Linux, **sleep**() is implemented via [**nanosleep**(2)](/nanosleep/2.md). See the [**nanosleep**(2)](/nanosleep/2.md) man page for a discussion of the clock used.

On some systems, **sleep**() may be implemented using [**alarm**(2)](/alarm/2.md) and **SIGALRM** (POSIX.1 permits this); mixing calls to [**alarm**(2)](/alarm/2.md) and **sleep**() is a bad idea.

## STANDARDS

POSIX.1-2008.

## HISTORY

POSIX.1-2001.

## CAVEATS

Using [**longjmp**(3)](/longjmp/3.md) from a signal handler or modifying the handling of **SIGALRM** while sleeping will cause undefined results.

## SEE ALSO

[**sleep**(1)](/sleep/1.md), [**alarm**(2)](/alarm/2.md), [**nanosleep**(2)](/nanosleep/2.md), [**signal**(2)](/signal/2.md), [**signal**(7)](/signal/7.md)
