|
|
1.1 ! root 1: .TH SIGNAL 2 ! 2: .CT 2 proc_man ! 3: .SH NAME ! 4: signal, kill \(mi receive and send signals ! 5: .SH SYNOPSIS ! 6: .nf ! 7: .B #include <signal.h> ! 8: .PP ! 9: .B SIG_TYP (*signal(sig, func))() ! 10: .B SIG_TYP (*func)(); ! 11: .PP ! 12: .B int kill(pid, sig) ! 13: .fi ! 14: .SH DESCRIPTION ! 15: A signal ! 16: is generated by some abnormal event ! 17: initiated by a user at a terminal (quit, interrupt), ! 18: by a program error (bus error, etc.), ! 19: or by ! 20: .I kill ! 21: in another process. ! 22: Normally, most signals ! 23: cause termination of the receiving process, ! 24: but ! 25: .I signal ! 26: allows them either to be ignored ! 27: or to be caught by interrupting to a specified function. ! 28: The following signal names are defined in ! 29: .FR <signal.h> : ! 30: .LP ! 31: .nf ! 32: .ta \w'SIGMMMM 'u +\w'15* 'u ! 33: \fLSIGHUP\fP 1 hangup ! 34: \fLSIGINT\fP 2 interrupt ! 35: \fLSIGQUIT\fP 3* quit ! 36: \fLSIGILL\fP 4* illegal instruction (not reset when caught) ! 37: \fLSIGTRAP\fP 5* trace trap (not reset when caught) ! 38: \fLSIGIOT\fP 6* IOT instruction ! 39: \fLSIGEMT\fP 7* EMT instruction ! 40: \fLSIGFPE\fP 8* floating point exception ! 41: \fLSIGKILL\fP 9 kill (cannot be caught or ignored) ! 42: \fLSIGBUS\fP 10* bus error ! 43: \fLSIGSEGV\fP 11* segmentation violation ! 44: \fLSIGSYS\fP 12* bad argument to system call ! 45: \fLSIGPIPE\fP 13 write on a pipe with no one to read it ! 46: \fLSIGALRM\fP 14 alarm clock ! 47: \fLSIGTERM\fP 15 software termination signal ! 48: 16 unassigned ! 49: \fLSIGSTOP\fP 17+ stop (cannot be caught or ignored) ! 50: \fLSIGCONT\fP 19# continue a stopped process ! 51: \fLSIGCHLD\fP 20# child has stopped or exited ! 52: .sp ! 53: .fi ! 54: * places core image in file ! 55: .B core ! 56: if not caught or ignored ! 57: .br ! 58: + suspends process until ! 59: .B SIGCONT ! 60: or ! 61: .BR PIOCRUN ; ! 62: see ! 63: .IR proc (4) ! 64: .br ! 65: # ignored if not caught ! 66: .PP ! 67: Signals 1 through ! 68: .BR NSIG -1, ! 69: defined in the include file, exist. ! 70: Those not listed above have ! 71: no conventional meaning in this system. ! 72: (Berkeley systems use 1-15 and 17-25.) ! 73: .PP ! 74: .I Signal ! 75: specifies how signal ! 76: .I sig ! 77: will be handled. ! 78: If ! 79: .I func ! 80: is ! 81: .BR SIG_DFL , ! 82: the default action listed above is reinstated. ! 83: If ! 84: .I func ! 85: is ! 86: .BR SIG_IGN , ! 87: the signal will be ignored. ! 88: Otherwise the signal will be caught; when the signal occurs, ! 89: the function pointed to by ! 90: .IR func , ! 91: say ! 92: .IR catcher (), ! 93: defined thus, ! 94: .EX ! 95: .L ! 96: int catcher(sig) { ... } ! 97: .EE ! 98: will be called with the ! 99: signal number as argument. ! 100: A return from the function will ! 101: continue the process at the point it was interrupted. ! 102: .PP ! 103: Except as indicated, a signal is reset to ! 104: .B SIG_DFL ! 105: after being caught. ! 106: Thus if it is desired to catch every such signal, ! 107: the catching routine must issue another ! 108: .I signal ! 109: call. ! 110: .PP ! 111: When a caught signal occurs ! 112: during certain system calls, the call terminates prematurely. ! 113: In particular this can occur during ! 114: .IR read (2) ! 115: or ! 116: .IR write ! 117: on a slow device (like a typewriter, but not a disk), ! 118: and during ! 119: .IR pause ! 120: and ! 121: .IR wait ; ! 122: see ! 123: .IR alarm (2) ! 124: and ! 125: .IR exit (2). ! 126: The interrupted system call will return error ! 127: .BR EINTR . ! 128: The user's program may then, if it wishes, re-execute the call. ! 129: .PP ! 130: .I Signal ! 131: returns the previous (or initial) ! 132: value of ! 133: .I func ! 134: for the particular signal. ! 135: .PP ! 136: After a ! 137: .IR fork (2) ! 138: the child inherits all signal settings. ! 139: .IR Exec (2) ! 140: resets all caught signals to default action. ! 141: .PP ! 142: .I Kill ! 143: sends signal ! 144: .I sig ! 145: to the process specified by process id ! 146: .I pid. ! 147: Signal 0 ! 148: has no effect on the target process and may be used to ! 149: test the existence of a process. ! 150: The success of sending a signal is independent of how the receiving ! 151: process treats the signal. ! 152: .PP ! 153: The effective userid of the sending process must be either 0 ! 154: or the effective userid of the receiving process. ! 155: .PP ! 156: If ! 157: .I pid ! 158: is 0, the signal is sent to all other processes in the ! 159: sender's process group; see ! 160: .IR stream (4). ! 161: .PP ! 162: If ! 163: .I pid ! 164: is \-1, and the user is the super-user, ! 165: the signal is broadcast universally ! 166: except to processes 0 (scheduler), ! 167: 1 (initialization) ! 168: and 2 (pageout); see ! 169: .IR init (8). ! 170: If ! 171: .I pid ! 172: is less than \-1, ! 173: it is negated ! 174: and taken as a process group ! 175: whose members should receive the signal. ! 176: .PP ! 177: Processes may send signals to themselves. ! 178: .SH FILES ! 179: .F core ! 180: .SH "SEE ALSO" ! 181: .IR kill (1), ! 182: .IR setjmp (3), ! 183: .IR stream (4) ! 184: .SH DIAGNOSTICS ! 185: .IR signal : ! 186: .B EINVAL ! 187: .br ! 188: .IR kill : ! 189: .BR EINVAL , ! 190: .BR EPERM , ! 191: .BR ESRCH ! 192: .SH BUGS ! 193: The reason for a trap should be distinguishable by extra arguments ! 194: to the signal handler. ! 195: .br ! 196: If a repeated signal arrives before the last one can be reset, ! 197: there is no chance to catch it. ! 198: .br ! 199: For historical reasons, the return value of ! 200: a catcher function is ! 201: .BR int ; ! 202: it is ! 203: .B void ! 204: in ! 205: .SM ANSI ! 206: standard C.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.