signal.3p (5711B)
- '\" et
- .TH SIGNAL "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
- .\"
- .SH PROLOG
- This manual page is part of the POSIX Programmer's Manual.
- The Linux implementation of this interface may differ (consult
- the corresponding Linux manual page for details of Linux behavior),
- or the interface may not be implemented on Linux.
- .\"
- .SH NAME
- signal
- \(em signal management
- .SH SYNOPSIS
- .LP
- .nf
- #include <signal.h>
- .P
- void (*signal(int \fIsig\fP, void (*\fIfunc\fP)(int)))(int);
- .fi
- .SH DESCRIPTION
- The functionality described on this reference page is aligned with the
- ISO\ C standard. Any conflict between the requirements described here and the
- ISO\ C standard is unintentional. This volume of POSIX.1\(hy2017 defers to the ISO\ C standard.
- .P
- The
- \fIsignal\fR()
- function chooses one of three ways in which receipt of the signal
- number
- .IR sig
- is to be subsequently handled. If the value of
- .IR func
- is SIG_DFL, default handling for that signal shall occur.
- If the value of
- .IR func
- is SIG_IGN, the signal shall be ignored.
- Otherwise, the application shall ensure that
- .IR func
- points to a function to be called when that signal occurs. An
- invocation of such a function because of a signal, or (recursively) of
- any further functions called by that invocation (other than functions
- in the standard library), is called a ``signal handler''.
- .P
- When a signal occurs, and
- .IR func
- points to a function, it is implementation-defined whether the
- equivalent of a:
- .sp
- .RS 4
- .nf
- signal(\fIsig\fP, SIG_DFL);
- .fi
- .P
- .RE
- .P
- is executed or the implementation prevents some implementation-defined
- set of signals (at least including
- .IR sig )
- from occurring until the current signal handling has completed. (If the
- value of
- .IR sig
- is SIGILL, the implementation may alternatively define that no action
- is taken.) Next the equivalent of:
- .sp
- .RS 4
- .nf
- (*func)(sig);
- .fi
- .P
- .RE
- .P
- is executed. If and when the function returns, if the value of
- .IR sig
- was SIGFPE, SIGILL, or SIGSEGV or any other implementation-defined
- value corresponding to
- a computational exception, the behavior is undefined. Otherwise, the
- program shall resume execution at the point it was interrupted. The
- ISO\ C standard places a restriction on applications relating to the use of
- \fIraise\fR()
- from signal handlers.
- This restriction does not apply to POSIX applications, as POSIX.1\(hy2008 requires
- \fIraise\fR()
- to be async-signal-safe (see
- .IR "Section 2.4.3" ", " "Signal Actions").
- .P
- If the process is multi-threaded,
- or if the process is single-threaded and a signal handler is
- executed other than as the result of:
- .IP " *" 4
- The process calling
- \fIabort\fR(),
- \fIraise\fR(),
- \fIkill\fR(),
- \fIpthread_kill\fR(),
- or
- \fIsigqueue\fR()
- to generate a signal that is not blocked
- .IP " *" 4
- A pending signal being unblocked and being delivered before the call
- that unblocked it returns
- .P
- the behavior is undefined if the signal handler refers to any object
- other than
- .IR errno
- with static storage duration other than by assigning a value to an
- object declared as
- .BR "volatile sig_atomic_t" ,
- or if the signal handler calls any function defined in this standard
- other than
- one of the functions listed in
- .IR "Section 2.4" ", " "Signal Concepts".
- .P
- At program start-up, the equivalent of:
- .sp
- .RS 4
- .nf
- signal(\fIsig\fP, SIG_IGN);
- .fi
- .P
- .RE
- .P
- is executed for some signals, and the equivalent of:
- .sp
- .RS 4
- .nf
- signal(\fIsig\fP, SIG_DFL);
- .fi
- .P
- .RE
- .P
- is executed for all other signals
- (see
- .IR exec ).
- .P
- The
- \fIsignal\fR()
- function shall not change the setting of
- .IR errno
- if successful.
- .SH "RETURN VALUE"
- If the request can be honored,
- \fIsignal\fR()
- shall return the value of
- .IR func
- for the most recent call to
- \fIsignal\fR()
- for the specified signal
- .IR sig .
- Otherwise, SIG_ERR shall be returned and a positive value shall
- be stored in
- .IR errno .
- .SH ERRORS
- The
- \fIsignal\fR()
- function shall fail if:
- .TP
- .BR EINVAL
- The
- .IR sig
- argument is not a valid signal number or an attempt is made to catch a
- signal that cannot be caught or ignore a signal that cannot be
- ignored.
- .P
- The
- \fIsignal\fR()
- function may fail if:
- .TP
- .BR EINVAL
- An attempt was made to set the action to SIG_DFL for a signal that
- cannot be caught or ignored (or both).
- .LP
- .IR "The following sections are informative."
- .SH EXAMPLES
- None.
- .SH "APPLICATION USAGE"
- The
- \fIsigaction\fR()
- function provides a more comprehensive and reliable mechanism for
- controlling signals; new applications should use
- \fIsigaction\fR()
- rather than
- \fIsignal\fR().
- .SH RATIONALE
- None.
- .SH "FUTURE DIRECTIONS"
- None.
- .SH "SEE ALSO"
- .IR "Section 2.4" ", " "Signal Concepts",
- .IR "\fIexec\fR\^",
- .IR "\fIpause\fR\^(\|)",
- .IR "\fIraise\fR\^(\|)",
- .IR "\fIsigaction\fR\^(\|)",
- .IR "\fIsigsuspend\fR\^(\|)",
- .IR "\fIwaitid\fR\^(\|)"
- .P
- The Base Definitions volume of POSIX.1\(hy2017,
- .IR "\fB<signal.h>\fP"
- .\"
- .SH COPYRIGHT
- Portions of this text are reprinted and reproduced in electronic form
- from IEEE Std 1003.1-2017, Standard for Information Technology
- -- Portable Operating System Interface (POSIX), The Open Group Base
- Specifications Issue 7, 2018 Edition,
- Copyright (C) 2018 by the Institute of
- Electrical and Electronics Engineers, Inc and The Open Group.
- In the event of any discrepancy between this version and the original IEEE and
- The Open Group Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be obtained online at
- http://www.opengroup.org/unix/online.html .
- .PP
- Any typographical or formatting errors that appear
- in this page are most likely
- to have been introduced during the conversion of the source files to
- man page format. To report such errors, see
- https://www.kernel.org/doc/man-pages/reporting_bugs.html .