4.1cBSD/usr/man/man2/signal.2

Compare this file to the similar file:
Show the results in this format:

.TH SIGNAL 2 2/12/83
.SH NAME
signal \- catch or ignore signals
.SH SYNOPSIS
.nf
.ft B
#include <signal.h>
.PP
.ft B
int (*signal(sig, func))()
int sig;
int (*func)();
.fi
.ft R
.SH DESCRIPTION
\fBThis interface is obsolete and will be replaced in the 4.2 release
by an interface compatible with signal(3J) and sigsys(2).\fP
.PP
.I Signal
allows the calling process to choose how it will handle
the receipt of a specific signal.
.I Sig
specifies the signal and
.I func
specifies the choice.
.PP
A signal
is generated by some abnormal event,
initiated either by user at a terminal (quit, interrupt),
by a program error (bus error, etc.),
or by request of another program (kill).
Normally all signals
cause termination of the receiving process,
but a
.I signal
call allows them either to be ignored
or to cause an interrupt to a specified location.
Here is the list of signals with names as in
the include file.
.LP
.nf
.ta \w'SIGVTALRM 'u +\w'15*  'u
SIGHUP	1	hangup
SIGINT	2	interrupt
SIGQUIT	3*	quit
SIGILL	4*	illegal instruction (not reset when caught)
SIGTRAP	5*	trace trap (not reset when caught)
SIGIOT	6*	IOT instruction
SIGEMT	7*	EMT instruction
SIGFPE	8*	floating point exception
SIGKILL	9	kill (cannot be caught or ignored)
SIGBUS	10*	bus error
SIGSEGV	11*	segmentation violation
SIGSYS	12*	bad argument to system call
SIGPIPE	13	write on a pipe with no one to read it
SIGALRM	14	alarm clock
SIGTERM	15	software termination signal
SIGURG	16	urgent condition pending
SIGSTOP	17	stop (cannot be caught, held or ignored)
SIGTSTP	18	stop signal generated from keyboard
SIGCONT	19	continue after stop
SIGCHLD	20	child status has changed
SIGTTIN	21	background read attempted from control terminal
SIGTTOU	22	background write attempted to control terminal
SIGIO	23	i/o is possible on a descriptor (see \fIsetdopts\fP(2))
SIGXCPU	24	cpu time limit exceeded (see \fIsetrlimit\fP(2))
SIGXFSZ	25	file size limit exceeded (see \fIsetrlimit\fP(2))
SIGVTALRM	26	virtual time alarm (see \fIsetitimer\fP(2))
SIGPROF	27	profiling timer alarm (see \fIsetitimer\fP(2))
.fi
.PP
Signal numbers 1, 2, 4, and 9 may be referred to by
their absolute decimal values.  All other signals should be
referred to symbolically.
.PP
The starred signals in the list above cause a core image
if not caught or ignored.
.PP
If
.I func
is SIG_DFL, the default action
for signal
.I sig
is reinstated; this default is termination,
sometimes with a core image.
If
.I func
is SIG_IGN the signal is ignored.
Otherwise
when the signal occurs
.I func
will be called with the
signal number as argument.
A return from the function will
continue the process at the point it was interrupted.
.PP
Except as indicated,
a signal is reset to SIG_DFL after being caught.
Thus if it is desired to
catch every such signal,
the catching routine must
issue another
.I signal
call.
.PP
If, when using this (older) signal interface,
a caught signal occurs
during certain system calls, the call terminates prematurely.
In particular this can occur
during an
.IR ioctl ,
.IR read ,
or
.IR write (2)
on a slow device (like a terminal; but not a file);
and during
.I pause
or
.IR wait (2).
When such a signal occurs, the saved user status
is arranged in such a way that when return from the
signal-catching takes place, it will appear that the
system call returned an error status EINTR.
The user's program may then, if it wishes,
re-execute the call.
.PP
The value of
.I signal
is the previous (or initial)
value of
.I func
for the particular signal.
.PP
After a
.IR  fork (2)
the child inherits
all signals.
.IR  Exec (2)
resets all
caught signals to default action.
.SH "RETURN VALUE
Upon successful completion,
.I signal
returns the previous value of
.I func
for the specified signal
.IR sig .
Otherwise, a value of \-1
is returned and
.I errno
is set to indicate the error.
.SH ERRORS
.I Signal
will fail if one or more of the following are true:
.TP 15
[EINVAL]
\fISig\fP is an illegal signal number,
including SIGKILL.
.TP 15
[EFAULT]
\fIFunc\fP points to an illegal address.
.SH CAVEATS
The
.I signal
function is not recommended for use as an interprocess
communications mechanism.
.SH "SEE ALSO"
kill(2),
pause(2),
sigsys(2),
signal(3),
psignal(3)
.SH DIAGNOSTICS
The value (int)\-1 is returned if the
given signal is out of range.
.SH BUGS
The traps should be distinguishable by extra arguments
to the signal handler, and all hardware supplied parameters should
be made available to the signal routine.
.PP
If a repeated signal arrives before the last one can be
reset, there is no chance to catch it
(however this is
.B not
true if you use
.IR sigsys (2J)
and
.IR sigset (3)).
.PP
The type specification of the routine and its
.I func
argument are problematical.