RAISE_DEFAULT_SIGNAL(3)

RAISE_DEFAULT_SIGNAL(3) | Library Functions Manual | RAISE_DEFAULT_SIGNAL(3)

# NAME

`raise_default_signal` —
raise the default signal handler

# LIBRARY

System Utilities Library (libutil, -lutil)

# SYNOPSIS

`#include <util.h>`

int
`raise_default_signal`(int sig);

# DESCRIPTION

The `raise_default_signal`() function raises the default signal handler for the signal sig. This function may be used by a user-defined signal handler router to ensure that a parent process receives the correct notification of a process termination by a signal. This can be used to avoid a common programming mistake when terminating a process from a custom `SIGINT` or `SIGQUIT` signal handler.

The operations performed are:

1. Block all signals, using sigprocmask(2).
2. Set the signal handler for signal sig to the default signal handler (`SIG_DFL`).
3. raise(3) signal sig.
4. Unblock signal sig to deliver it.
5. Restore the original signal mask and handler, even if there was a failure.

See signal(7) for a table of signals and default actions.

The `raise_default_signal`() function should be async-signal-safe.

# RETURN VALUES

Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and the global variable errno is set to indicate the error.

# ERRORS

The `raise_default_signal`() function may fail and set errno for any of the errors specified for the functions sigemptyset(3), sigfillset(3), sigaddset(3), sigprocmask(2), sigaction(2), or raise(3).

# SEE ALSO

sigaction(2), sigprocmask(2), raise(3), signal(7)

# HISTORY

The `raise_default_signal`() function first appeared in NetBSD 5.0.

September 25, 2007 | NetBSD 10.0