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