|
|
1.1 root 1: .TH SIGNAL 3C "15 June 1983"
2: .UC 4
3: .ie t .ds d \(dg
4: .el .ds d \z'|+'
5: .ie t .ds b \(bu
6: .el .ds b @
7: .SH NAME
8: signal \- simplified software signal facilities
9: .SH SYNOPSIS
10: .nf
11: .B #include <signal.h>
12: .PP
13: .B (*signal(sig, func))()
14: .B void (*func)();
15: .fi
16: .SH DESCRIPTION
17: .I Signal
18: is a simplified interface to the more general
19: .IR sigvec (2)
20: facility.
21: .PP
22: A signal
23: is generated by some abnormal event,
24: initiated by a user at a terminal (quit, interrupt, stop),
25: by a program error (bus error, etc.),
26: by request of another program (kill),
27: or when a process is stopped because it wishes to access
28: its control terminal while in the background (see
29: .IR tty (4)).
30: Signals are optionally generated
31: when a process resumes after being stopped,
32: when the status of child processes changes,
33: or when input is ready at the control terminal.
34: Most signals cause termination of the receiving process if no action
35: is taken; some signals instead cause the process receiving them
36: to be stopped, or are simply discarded if the process has not
37: requested otherwise.
38: Except for the SIGKILL and SIGSTOP
39: signals, the
40: .I signal
41: call allows signals either to be ignored
42: or to cause an interrupt to a specified location.
43: The following is a list of all signals with
44: names as in the include file
45: .RI < signal.h >:
46: .LP
47: .nf
48: .ta \w'SIGVTALRM 'u +\w'15* 'u
49: SIGHUP 1 hangup
50: SIGINT 2 interrupt
51: SIGQUIT 3* quit
52: SIGILL 4* illegal instruction
53: SIGTRAP 5* trace trap
54: SIGIOT 6* IOT instruction
55: SIGEMT 7* EMT instruction
56: SIGFPE 8* floating point exception
57: SIGKILL 9 kill (cannot be caught or ignored)
58: SIGBUS 10* bus error
59: SIGSEGV 11* segmentation violation
60: SIGSYS 12* bad argument to system call
61: SIGPIPE 13 write on a pipe with no one to read it
62: SIGALRM 14 alarm clock
63: SIGTERM 15 software termination signal
64: SIGURG 16\*b urgent condition present on socket
65: SIGSTOP 17\*d stop (cannot be caught or ignored)
66: SIGTSTP 18\*d stop signal generated from keyboard
67: SIGCONT 19\*b continue after stop
68: SIGCHLD 20\*b child status has changed
69: SIGTTIN 21\*d background read attempted from control terminal
70: SIGTTOU 22\*d background write attempted to control terminal
71: SIGIO 23\*b i/o is possible on a descriptor (see \fIfcntl\fP(2))
72: SIGXCPU 24 cpu time limit exceeded (see \fIsetrlimit\fP(2))
73: SIGXFSZ 25 file size limit exceeded (see \fIsetrlimit\fP(2))
74: SIGVTALRM 26 virtual time alarm (see \fIsetitimer\fP(2))
75: SIGPROF 27 profiling timer alarm (see \fIsetitimer\fP(2))
76: .fi
77: .PP
78: The starred signals in the list above cause a core image
79: if not caught or ignored.
80: .PP
81: If
82: .I func
83: is SIG_DFL, the default action
84: for signal
85: .I sig
86: is reinstated; this default is termination
87: (with a core image for starred signals)
88: except for signals marked with \*b or \*d.
89: Signals marked with \*b are discarded if the action
90: is SIG_DFL; signals marked
91: with \*d cause the process to stop.
92: If
93: .I func
94: is SIG_IGN the signal is subsequently ignored
95: and pending instances of the signal are discarded.
96: Otherwise, when the signal occurs
97: further occurences of the signal are
98: automatically blocked and
99: .I func
100: is called.
101: .PP
102: A return from the function unblocks
103: the handled signal and
104: continues the process at the point it was interrupted.
105: \fBUnlike previous signal facilities, the handler \fIfunc\fP
106: remains installed after a signal has been delivered.\fP
107: .PP
108: If a caught signal occurs
109: during certain system calls, causing
110: the call to terminate prematurely, the call
111: is automatically restarted.
112: In particular this can occur
113: during a
114: .I read
115: or
116: .IR write (2)
117: on a slow device (such as a terminal; but not a file)
118: and during a
119: .IR wait (2).
120: .PP
121: The value of
122: .I signal
123: is the previous (or initial)
124: value of
125: .I func
126: for the particular signal.
127: .PP
128: After a
129: .IR fork (2)
130: or
131: .IR vfork (2)
132: the child inherits
133: all signals.
134: .IR Execve (2)
135: resets all caught signals to the default action;
136: ignored signals remain ignored.
137: .SH "RETURN VALUE
138: The previous action is returned on a successful call.
139: Otherwise, \-1 is returned and
140: .I errno
141: is set to indicate the error.
142: .SH ERRORS
143: .I Signal
144: will fail and no action will take place if one of the
145: following occur:
146: .TP 15
147: [EINVAL]
148: .I Sig
149: is not a valid signal number.
150: .TP 15
151: [EINVAL]
152: An attempt is made to ignore or supply a handler for SIGKILL
153: or SIGSTOP.
154: .TP 15
155: [EINVAL]
156: An attempt is made to ignore SIGCONT (by default SIGCONT
157: is ignored).
158: .SH "SEE ALSO"
159: kill(1),
160: ptrace(2), kill(2),
161: sigvec(2), sigblock(2), sigsetmask(2), sigpause(2),
162: sigstack(2), setjmp(3), tty(4)
163: The handler routine can be declared:
164: .PP
165: handler(sig, code, scp)
166: .PP
167: Here
168: .I sig
169: is the signal number, into which the hardware faults and traps are
170: mapped as defined below. Code is a parameter which is either a constant
171: as given below or, for compatibility mode faults, the code provided by
172: the hardware.
173: .I Scp
174: is a pointer to the
175: .I "struct sigcontext"
176: used by the system to restore the process context from before
177: the signal.
178: Compatibility mode faults are distinguished from the
179: other SIGILL traps by having PSL_CM set in the psl.
180: .PP
181: The following defines the mapping of hardware traps to signals
182: and codes. All of these symbols are defined in
183: .RI < signal.h >:
184: .LP
185: .ta \w' Floating divide by zero fault 'u +\w'15* 'u +8n
186: .nf
187: Hardware condition Signal Code
188:
189: Arithmetic traps:
190: Integer overflow SIGFPE FPE_INTOVF_TRAP
191: Integer division by zero SIGFPE FPE_INTDIV_TRAP
192: Floating overflow trap SIGFPE FPE_FLTOVF_TRAP
193: Floating division by zero SIGFPE FPE_FLTDIV_TRAP
194: Floating underflow trap SIGFPE FPE_FLTUND_TRAP
195: Subscript-range SIGFPE FPE_SUBRNG_TRAP
196: Floating overflow fault SIGFPE FPE_FLTOVF_FAULT
197: Floating divide by zero fault SIGFPE FPE_FLTDIV_FAULT
198: Floating underflow fault SIGFPE FPE_FLTUND_FAULT
199: Length access control SIGSEGV
200: Protection violation SIGBUS
201: Reserved instruction SIGILL ILL_RESAD_FAULT
202: Reserved operand SIGILL ILL_PRIVIN_FAULT
203: Reserved addressing SIGILL ILL_RESOP_FAULT
204: Trace pending SIGTRAP
205: Bpt instruction SIGTRAP
206: .fi
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.