|
|
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.3 6.5 (Berkeley) 7/1/90
6: .\"
7: .TH SIGNAL 3C "July 1, 1990"
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 void (*signal(sig, func))()
20: .B void (*func)();
21: .fi
22: .SH DESCRIPTION
23: .I Signal
24: is a simplified interface to the more general
25: .IR sigaction (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: SIGABRT 6* \fIabort\fP() call (formerly SIGIOT)
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: SIGINFO 29\*b status request from keyboard
84: SIGUSR1 30 User defined signal 1
85: SIGUSR2 31 User defined signal 2
86: .fi
87: .PP
88: The starred signals in the list above cause a core image
89: if not caught or ignored.
90: .PP
91: If
92: .I func
93: is SIG_DFL, the default action
94: for signal
95: .I sig
96: is reinstated; this default is termination
97: (with a core image for starred signals)
98: except for signals marked with \*b or \*d.
99: Signals marked with \*b are discarded if the action
100: is SIG_DFL; signals marked
101: with \*d cause the process to stop.
102: If
103: .I func
104: is SIG_IGN the signal is subsequently ignored
105: and pending instances of the signal are discarded.
106: Otherwise, when the signal occurs
107: further occurrences of the signal are
108: automatically blocked and
109: .I func
110: is called.
111: .PP
112: A return from the function unblocks
113: the handled signal and
114: continues the process at the point it was interrupted.
115: \fBUnlike previous signal facilities, the handler \fIfunc\fP
116: remains installed after a signal has been delivered.\fP
117: .PP
118: If a caught signal occurs
119: during certain system calls, causing
120: the call to terminate prematurely, the call
121: is automatically restarted
122: (the handler is installed using the SA_RESTART flag with
123: .IR sigaction (2)).
124: The affected system calls include
125: .IR read (2),
126: .IR write (2),
127: .IR sendto (2),
128: .IR recvfrom (2),
129: .IR sendmsg (2)
130: and
131: .IR recvmsg (2)
132: on a communications channel or a slow device (such as a terminal,
133: but not a regular file)
134: and during a
135: .IR wait (2)
136: or
137: .IR ioctl (2).
138: However, calls that have already committed are not restarted,
139: but instead return a partial success (for example, a short read count).
140: .PP
141: The value of
142: .I signal
143: is the previous (or initial)
144: value of
145: .I func
146: for the particular signal.
147: .PP
148: After a
149: .IR fork (2)
150: or
151: .IR vfork (2)
152: the child inherits
153: all signals.
154: .IR Execve (2)
155: resets all caught signals to the default action;
156: ignored signals remain ignored.
157: .SH "RETURN VALUE
158: The previous action is returned on a successful call.
159: Otherwise, \-1 is returned and
160: .I errno
161: is set to indicate the error.
162: .SH ERRORS
163: .I Signal
164: will fail and no action will take place if one of the
165: following occur:
166: .TP 15
167: [EINVAL]
168: .I Sig
169: is not a valid signal number.
170: .TP 15
171: [EINVAL]
172: An attempt is made to ignore or supply a handler for SIGKILL
173: or SIGSTOP.
174: .SH "SEE ALSO"
175: kill(1), ptrace(2), kill(2),
176: sigaction(2), sigprocmask(2), sigsuspend(2),
177: sigstack(2), setjmp(3), tty(4)
178: .SH "NOTES (VAX-11)"
179: The handler routine can be declared:
180: .PP
181: void handler(sig, code, scp)
182: .PP
183: Here
184: .I sig
185: is the signal number, into which the hardware faults and traps are
186: mapped as defined below. Code is a parameter which is either a constant
187: as given below or, for compatibility mode faults, the code provided by
188: the hardware.
189: .I Scp
190: is a pointer to the
191: .I "struct sigcontext"
192: used by the system to restore the process context from before
193: the signal.
194: Compatibility mode faults are distinguished from the
195: other SIGILL traps by having PSL_CM set in the psl.
196: .PP
197: The following defines the mapping of hardware traps to signals
198: and codes. All of these symbols are defined in
199: .RI < signal.h >:
200: .LP
201: .ta \w' Floating/decimal divide by zero 'u +\w'15* 'u +8n
202: .nf
203: Hardware condition Signal Code
204:
205: Arithmetic traps:
206: Integer overflow SIGFPE FPE_INTOVF_TRAP
207: Integer division by zero SIGFPE FPE_INTDIV_TRAP
208: Floating overflow trap SIGFPE FPE_FLTOVF_TRAP
209: Floating/decimal division by zero SIGFPE FPE_FLTDIV_TRAP
210: Floating underflow trap SIGFPE FPE_FLTUND_TRAP
211: Decimal overflow trap SIGFPE FPE_DECOVF_TRAP
212: Subscript-range SIGFPE FPE_SUBRNG_TRAP
213: Floating overflow fault SIGFPE FPE_FLTOVF_FAULT
214: Floating divide by zero fault SIGFPE FPE_FLTDIV_FAULT
215: Floating underflow fault SIGFPE FPE_FLTUND_FAULT
216: Length access control SIGSEGV
217: Protection violation SIGBUS
218: Reserved instruction SIGILL ILL_RESAD_FAULT
219: Customer-reserved instr. SIGEMT
220: Reserved operand SIGILL ILL_PRIVIN_FAULT
221: Reserved addressing SIGILL ILL_RESOP_FAULT
222: Trace pending SIGTRAP
223: Bpt instruction SIGTRAP
224: Compatibility-mode SIGILL hardware supplied code
225: Chme SIGSEGV
226: Chms SIGSEGV
227: Chmu SIGSEGV
228: .fi
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.