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