diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/unix-v10/man2/signal.2 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/unix-v10/man2/signal.2')
| -rw-r--r-- | static/unix-v10/man2/signal.2 | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/static/unix-v10/man2/signal.2 b/static/unix-v10/man2/signal.2 new file mode 100644 index 00000000..132c8eb1 --- /dev/null +++ b/static/unix-v10/man2/signal.2 @@ -0,0 +1,220 @@ +.TH SIGNAL 2 +.CT 2 proc_man +.SH NAME +signal, kill \(mi receive and send signals +.SH SYNOPSIS +.nf +.B #include <signal.h> +.PP +.B SIG_TYP (*signal(sig, func))() +.B SIG_TYP (*func)(); +.PP +.B int kill(pid, sig) +.fi +.SH DESCRIPTION +A signal +is generated by some abnormal event +initiated by a user at a terminal (quit, interrupt), +by a program error (bus error, etc.), +or by +.I kill +in another process. +Normally, most signals +cause termination of the receiving process, +but +.I signal +allows them either to be ignored +or to be caught by interrupting to a specified function. +The following signal names are defined in +.FR <signal.h> : +.LP +.nf +.ta \w'SIGMMMM 'u +\w'15* 'u +\fLSIGHUP\fP 1 hangup +\fLSIGINT\fP 2 interrupt +\fLSIGQUIT\fP 3* quit +\fLSIGILL\fP 4* illegal instruction (not reset when caught) +\fLSIGTRAP\fP 5* trace trap (not reset when caught) +\fLSIGIOT\fP 6* IOT instruction +\fLSIGEMT\fP 7* EMT instruction +\fLSIGFPE\fP 8* floating point exception +\fLSIGKILL\fP 9 kill (cannot be caught or ignored) +\fLSIGBUS\fP 10* bus error +\fLSIGSEGV\fP 11* segmentation violation +\fLSIGSYS\fP 12* bad argument to system call +\fLSIGPIPE\fP 13 write on a pipe with no one to read it +\fLSIGALRM\fP 14 alarm clock +\fLSIGTERM\fP 15 software termination signal + 16 unassigned +\fLSIGSTOP\fP 17+ stop (cannot be caught or ignored) +\fLSIGCONT\fP 19# continue a stopped process +\fLSIGCHLD\fP 20# child has stopped or exited +\fLSIGLAB\fP 26# file descriptor label change (not reset when caught) +.sp +.fi +* places core image in file +.B core +if not caught or ignored +.br ++ suspends process until +.B SIGCONT +or +.BR PIOCRUN ; +see +.IR proc (4) +.br +# ignored if not caught +.PP +Signals 1 through +.BR NSIG -1, +defined in the include file, exist. +Those not listed above have +no conventional meaning in this system. +(Berkeley systems use 1-15 and 17-25.) +.PP +.I Signal +specifies how signal +.I sig +will be handled. +If +.I func +is +.BR SIG_DFL , +the default action listed above is reinstated. +If +.I func +is +.BR SIG_IGN , +the signal will be ignored. +Otherwise the signal will be caught; when the signal occurs, +the function pointed to by +.IR func , +say +.IR catcher (), +defined thus, +.EX +.L + int catcher(sig) { ... } +.EE +will be called with the +signal number as argument. +A return from the function will +continue the process at the point it was interrupted. +.PP +Except as indicated, a signal is reset to +.B SIG_DFL +after being caught. +Thus if it is desired to catch every such signal, +the catching routine must issue another +.I signal +call. +.PP +When a caught signal occurs +during certain system calls, the call terminates prematurely. +In particular this can occur during +.IR read +or +.IR write (2) +on a slow device (like a typewriter, but not a disc); +and during +.I pause +and +.IR wait (2). +The interrupted system call will return error +.BR EINTR . +The user's program may then, if it wishes, re-execute the call. +.PP +Core images are made exactly as if by +.IR creat (2) +and +.IR write (2). +However, no core image will be made for a process +that ever had capability +.BR T_NOCHK +or for a child of such a process until the child +successfully performs +.IR exec (2). +.PP +.I Signal +returns the previous (or initial) +value of +.I func +for the particular signal. +.PP +After a +.IR fork (2) +the child inherits all signal settings. +.IR Exec (2) +resets all caught signals to default action. +.PP +.I Kill +sends signal +.I sig +to the process specified by process id +.I pid. +Signal 0 +has no effect on the target process and may be used to +test the existence of a process. +The success of sending a signal is independent of how the receiving +process treats the signal. +.PP +The effective userid of the sending process must be either 0 +or the effective userid of the receiving process. +.PP +If +.I pid +is 0, the signal is sent to all other processes in the +sender's process group; see +.IR stream (4). +.PP +If +.I pid +is \-1, and the user is the super-user, +the signal is broadcast universally +except to processes 0 (scheduler), +1 (initialization) +and 2 (pageout); see +.IR init (8). +If +.I pid +is less than \-1, +it is negated +and taken as a process group +whose members should receive the signal. +.PP +Processes may send signals to themselves. +.SH FILES +.F core +.SH "SEE ALSO" +.IR kill (1), +.IR setjmp (3) +.SH DIAGNOSTICS +.IR signal : +.B EINVAL +.br +.IR kill : +.BR EINVAL , +.BR EPERM , +.BR ESRCH +.SH BUGS +Unadvertised and unsupported +.I func +and +.I sig +arguments can radically and permanently change the +behavior of signals. +.br +The reason for a trap should be distinguishable by extra arguments +to the signal handler. +.br +If a repeated signal arrives before the last one can be reset, +there is no chance to catch it. +.br +For historical reasons, the return value of +a catcher function is +.BR int ; +it is +.B void +in +.SM ANSI +standard C. |
