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

# alarm(2)

set an alarm clock for delivery of a signal

## NAME

alarm - set an alarm clock for delivery of a signal

## LIBRARY

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

## SYNOPSIS

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

**unsigned int alarm(unsigned int** *seconds***);**

## DESCRIPTION

**alarm**() arranges for a **SIGALRM** signal to be delivered to the calling process in *seconds* seconds.

If *seconds* is zero, any pending alarm is canceled.

In any event any previously set **alarm**() is canceled.

## RETURN VALUE

**alarm**() returns the number of seconds remaining until any previously scheduled alarm was due to be delivered, or zero if there was no previously scheduled alarm.

## STANDARDS

POSIX.1-2024.

## HISTORY

4\.3BSD, SVr4, POSIX.1-1988.

## NOTES

**alarm**() and [**setitimer**(2)](/setitimer/2.md) share the same timer; calls to one will interfere with use of the other.

Alarms created by **alarm**() are preserved across [**execve**(2)](/execve/2.md) and are not inherited by children created via [**fork**(2)](/fork/2.md).

[**sleep**(3)](/sleep/3.md) may be implemented using **SIGALRM**; mixing calls to **alarm**() and [**sleep**(3)](/sleep/3.md) is a bad idea.

Scheduling delays can, as ever, cause the execution of the process to be delayed by an arbitrary amount of time.

## SEE ALSO

[**gettimeofday**(2)](/gettimeofday/2.md), [**pause**(2)](/pause/2.md), [**select**(2)](/select/2.md), [**setitimer**(2)](/setitimer/2.md), [**sigaction**(2)](/sigaction/2.md), [**signal**(2)](/signal/2.md), [**timer\_create**(2)](/timer_create/2.md), [**timerfd\_create**(2)](/timerfd_create/2.md), [**sleep**(3)](/sleep/3.md), [**time**(7)](/time/7.md)
