Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ signal(2) — UNIX 4.1BSD

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sigsys(2)

kill(1)

kill(2)

ptrace(2)

setjmp(3)

sigset(3)

SIGNAL(2)  —  Unix Programmer’s Manual

NAME

signal − catch or ignore signals

SYNOPSIS

#include <signal.h>

(\(**signal(sig, func))()
void (\(**func)();

DESCRIPTION

N.B.: The system currently supports two signal implementations. The one described here is standard in version 7 UNIX systems, and is retained for backward compatabililty. The one described in sigsys(2) as supplemented by sigset(3) provides for the needs of the job control mechanisms used by csh(1), and corrects the bugs in this older implementation of signals, allowing programs which process interrupts to be written reliably.

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 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. 

SIGHUP1hangup
SIGINT2interrupt
SIGQUIT3\(**quit
SIGILL4\(**illegal instruction (not reset when caught)
SIGTRAP5\(**trace trap (not reset when caught)
SIGIOT6\(**IOT instruction
SIGEMT7\(**EMT instruction
SIGFPE8\(**floating point exception
SIGKILL9kill (cannot be caught or ignored)
SIGBUS10\(**bus error
SIGSEGV11\(**segmentation violation
SIGSYS12\(**bad argument to system call
SIGPIPE13write on a pipe with no one to read it
SIGALRM14alarm clock
SIGTERM15software termination signal
16unassigned

N.B.: There are actually more signals; see sigsys(2); the signals listed here are those of standard version 7.

The starred signals in the list above cause a core image if not caught or ignored. 

If func is SIG_DFL, the default action for signal sig is reinstated; this default is termination, sometimes with a core image.  If func is SIG_IGN the signal is ignored.  Otherwise when the signal occurs 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. 

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 signal call. 

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 ioctl, read, or write(2) on a slow device (like a terminal; but not a file); and during pause or 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. The user’s program may then, if it wishes, re-execute the call.

The value of signal is the previous (or initial) value of func for the particular signal. 

After a fork(2) the child inherits all signals. Exec(2) resets all caught signals to default action.

If a process is using the mechanisms of sigsys(2) and sigset(3) then many of these calls are automatically restarted (See sigsys(2) and jobs(3) for details).

SEE ALSO

sigsys(2), kill(1), kill(2), ptrace(2), setjmp(3), sigset(3)

DIAGNOSTICS

The value (int)−1 is returned if the given signal is out of range. 

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. 

If a repeated signal arrives before the last one can be reset, there is no chance to catch it (however this is not true if you use sigsys(2) and sigset(3)).

The type specification of the routine and its func argument are problematical. 

ASSEMBLER (PDP-11)

(signal = 48.) 
sys signal; sig; label
(old label in r0)

If label is 0, default action is reinstated.  If label is 1, the signal is ignored.  Any other even label specifies an address in the process where an interrupt is simulated.  An RTI or RTT instruction will return from the interrupt. 

NOTES (VAX-11)

See sigsys(2) for information on how hardware faults are mapped into signals.

th Berkeley Distribution

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026