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

# sysv\_signal(3)

signal handling with System V semantics

## NAME

sysv\_signal - signal handling with System V semantics

## LIBRARY

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

## SYNOPSIS

```
#define _GNU_SOURCE         /* See feature_test_macros(7) */
#include <signal.h>
```

**typedef typeof(void (int))  \*sighandler\_t;**

**sighandler\_t sysv\_signal(int** *signum***, sighandler\_t** *handler***);**

## DESCRIPTION

The **sysv\_signal**() function takes the same arguments, and performs the same task, as [**signal**(2)](/signal/2.md).

However **sysv\_signal**() provides the System V unreliable signal semantics, that is: a) the disposition of the signal is reset to the default when the handler is invoked; b) delivery of further instances of the signal is not blocked while the signal handler is executing; and c) if the handler interrupts (certain) blocking system calls, then the system call is not automatically restarted.

## RETURN VALUE

The **sysv\_signal**() function returns the previous value of the signal handler, or **SIG\_ERR** on error.

## ERRORS

As for [**signal**(2)](/signal/2.md).

## ATTRIBUTES

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

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **sysv\_signal**() | Thread safety | MT-Safe |

## VERSIONS

Use of **sysv\_signal**() should be avoided; use [**sigaction**(2)](/sigaction/2.md) instead.

On older Linux systems, **sysv\_signal**() and [**signal**(2)](/signal/2.md) were equivalent. But on newer systems, [**signal**(2)](/signal/2.md) provides reliable signal semantics; see [**signal**(2)](/signal/2.md) for details.

The use of *sighandler\_t* is a GNU extension; this type is defined only if the **\_GNU\_SOURCE** feature test macro is defined.

## STANDARDS

None.

## SEE ALSO

[**sigaction**(2)](/sigaction/2.md), [**signal**(2)](/signal/2.md), [**bsd\_signal**(3)](/bsd_signal/3.md), [**signal**(7)](/signal/7.md)
