---
name: "strsignal"
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/psiginfo"
---

# strsignal(3)

system signal messages

Part of [psiginfo(3)](/psiginfo/3.md).

## NAME

**psignal**, **psiginfo**, **strsignal**, **sys\_siglist**, **sys\_signame**, **sig2str**, **str2sig** – system signal messages

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*void*\

**psignal**(*int sig*, *const char \*s*);

*void*\

**psiginfo**(*const siginfo\_t \*si*, *const char \*s*); *extern* *const* *char* *\** *const* *sys\_siglist\[\]*; *extern* *const* *char* *\** *const* *sys\_signame\[\]*;

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

*char \**\

**strsignal**(*int sig*);

*int*\

**sig2str**(*int signum*, *char \*str*);

*int*\

**str2sig**(*char \*str*, *int \*pnum*);

## DESCRIPTION

The **psignal**() and **strsignal**() functions locate the descriptive message string for a signal number.

The **strsignal**() function accepts a signal number argument *sig* and returns a pointer to the corresponding message string.

The **psignal**() function accepts a signal number argument *sig* and writes it to the standard error. If the argument *s* is non-NULL and does not point to the null character, *s* is written to the standard error file descriptor prior to the message string, immediately followed by a colon and a space. If the signal number is not recognized ([sigaction(2)](/sigaction/2.md)), the string “Unknown signal” is produced.

The **psiginfo**() function is similar to **psignal**(), except that the signal number information is taken from the *si* argument which is a *siginfo\_t* structure.

The message strings can be accessed directly through the external array *sys\_siglist*, indexed by recognized signal numbers. The external array *sys\_signame* is used similarly and contains short, upper-case abbreviations for signals which are useful for recognizing signal names in user input. The defined variable NSIG contains a count of the strings in *sys\_siglist* and *sys\_signame*.

The **sig2str**() function translates the signal number *signum* to the signal name, without the “SIG” prefix, and stores it at the location specified by *str*, which should be large enough to hold the name and the terminating NUL byte. The symbol SIG2STR\_MAX gives the maximum size in bytes required.

The **str2sig**() function translates the signal name *str* to a signal number and stores it in the location referenced by *pnum*. The name in *str* can be either the name of the signal, with or without the “SIG” prefix, or a decimal number.

## RETURN VALUES

The **sig2str**() and **str2sig**() return 0 on success and -1 on translation failure. In the latter case the memory to store the translation result is left intact.

## SEE ALSO

[sigaction(2)](/sigaction/2.md), [perror(3)](/perror/3.md), [strerror(3)](/strerror/3.md)

## STANDARDS

The **psignal**() and **psiginfo**() functions are defined by IEEE Std 1003.1-2008 (“POSIX.1”) , while the **sig2str**() and **str2sig**() functions are defined by IEEE Std 1003.1-2024 (“POSIX.1”).

## HISTORY

The **psignal**() function appeared in 4.2BSD. The **psiginfo**() function appeared in FreeBSD 14.3, NetBSD 6.0, and DragonFly 4.1. The **sig2str**() and **str2sig**() functions appeared in FreeBSD 15.0.
