summaryrefslogtreecommitdiff
path: root/static/v10/man2/signal.2
diff options
context:
space:
mode:
Diffstat (limited to 'static/v10/man2/signal.2')
-rw-r--r--static/v10/man2/signal.2220
1 files changed, 220 insertions, 0 deletions
diff --git a/static/v10/man2/signal.2 b/static/v10/man2/signal.2
new file mode 100644
index 00000000..132c8eb1
--- /dev/null
+++ b/static/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.