---
name: "usleep"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/usleep"
---

# usleep(3)

suspend thread execution for an interval measured in microseconds

## NAME

**usleep** – suspend thread execution for an interval measured in microseconds

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*int*\

**usleep**(*useconds\_t microseconds*);

## DESCRIPTION

The **usleep**() function suspends execution of the calling thread until either *microseconds* microseconds have elapsed or a signal is delivered to the thread and its action is to invoke a signal-catching function or to terminate the process. System activity may lengthen the sleep by an indeterminate amount.

This function is implemented using [nanosleep(2)](/nanosleep/2.md) by pausing for *microseconds* microseconds or until a signal occurs. Consequently, in this implementation, sleeping has no effect on the state of process timers, and there is no special handling for SIGALRM.

## RETURN VALUES

The **usleep()** function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

## ERRORS

The **usleep**() function will fail if:

- \[EINTR\]

  A signal was delivered to the calling thread and its action was to invoke a signal-catching function.

## SEE ALSO

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

## HISTORY

The **usleep**() function appeared in 4.3BSD.
