home *** CD-ROM | disk | FTP | other *** search
-
- SIGVEC(2) UNIX Programmer's Manual SIGVEC(2)
-
- NNAAMMEE
- ssiiggvveecc - software signal facilities
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssiiggnnaall..hh>>
- struct sigvec {
- void (*sv_handler)();
- sigset_t sv_mask;
- int sv_flags;
- };
-
- ssiiggvveecc(_i_n_t _s_i_g, _s_t_r_u_c_t _s_i_g_v_e_c _*_v_e_c, _s_t_r_u_c_t _s_i_g_v_e_c _*_o_v_e_c)
-
- DDEESSCCRRIIPPTTIIOONN
- TThhiiss iinntteerrffaaccee iiss mmaaddee oobbssoolleettee bbyy ssiiggaaccttiioonn((22))..
-
- The system defines a set of signals that may be delivered to a process.
- Signal delivery resembles the occurence of a hardware interrupt: the sig
- nal is blocked from further occurrence, the current process context is
- saved, and a new one is built. A process may specify a _h_a_n_d_l_e_r to which
- a signal is delivered, or specify that a signal is to be _b_l_o_c_k_e_d or
- _i_g_n_o_r_e_d. A process may also specify that a default action is to be taken
- by the system when a signal occurs. Normally, signal handlers execute on
- the current stack of the process. This may be changed, on a perhandler
- basis, so that signals are taken on a special _s_i_g_n_a_l _s_t_a_c_k.
-
- All signals have the same _p_r_i_o_r_i_t_y. Signal routines execute with the sig
- nal that caused their invocation _b_l_o_c_k_e_d, but other signals may yet oc
- cur. A global _s_i_g_n_a_l _m_a_s_k defines the set of signals currently blocked
- from delivery to a process. The signal mask for a process is initialized
- from that of its parent (normally 0). It may be changed with a sig
- block(2) or sigsetmask(2) call, or when a signal is delivered to the pro
- cess.
-
- When a signal condition arises for a process, the signal is added to a
- set of signals pending for the process. If the signal is not currently
- _b_l_o_c_k_e_d by the process then it is delivered to the process. When a sig
- nal is delivered, the current state of the process is saved, a new signal
- mask is calculated (as described below), and the signal handler is in
- voked. The call to the handler is arranged so that if the signal han
- dling routine returns normally the process will resume execution in the
- context from before the signal's delivery. If the process wishes to re
- sume in a different context, then it must arrange to restore the previous
- context itself.
-
- When a signal is delivered to a process a new signal mask is installed
- for the duration of the process' signal handler (or until a sigblock or
- sigsetmask call is made). This mask is formed by taking the current sig
- nal mask, adding the signal to be delivered, and _o_r'ing in the signal
- mask associated with the handler to be invoked.
-
- SSiiggvveecc() assigns a handler for a specific signal. If _v_e_c is nonzero, it
- specifies a handler routine and mask to be used when delivering the spec
- ified signal. Further, if the SV_ONSTACK bit is set in _s_v___f_l_a_g_s, the
- system will deliver the signal to the process on a _s_i_g_n_a_l _s_t_a_c_k, speci
- fied with sigstack(2). If _o_v_e_c is nonzero, the previous handling infor
- mation for the signal is returned to the user.
-
- The following is a list of all signals with names as in the include file
- <_s_i_g_n_a_l_._h>:
-
-
-
- NNAAMMEE DDeeffaauulltt AAccttiioonn DDeessccrriippttiioonn
- SIGHUP terminate process terminal line hangup
- SIGINT terminate process interrupt program
- SIGQUIT create core image quit program
- SIGILL create core image illegal instruction
- SIGTRAP create core image trace trap
- SIGABRT create core image abort(2) call (formerly SIGIOT)
- SIGEMT create core image emulate instruction executed
- SIGFPE create core image floatingpoint exception
- SIGKILL terminate process kill program
- SIGBUS create core image bus error
- SIGSEGV create core image segmentation violation
- SIGSYS create core image system call given invalid
- argument
- SIGPIPE terminate process write on a pipe with no reader
- SIGALRM terminate process realtime timer expired
- SIGTERM terminate process software termination signal
- SIGURG discard signal urgent condition present on
- socket
- SIGSTOP stop process stop (cannot be caught or
- ignored)
- SIGTSTP stop process stop signal generated from
- keyboard
- SIGCONT discard signal continue after stop
- SIGCHLD discard signal child status has changed
- SIGTTIN stop process background read attempted from
- control terminal
- SIGTTOU stop process background write attempted to
- control terminal
- SIGIO discard signal I/O is possible on a descriptor
- (see fcntl(2))
- SIGXCPU terminate process cpu time limit exceeded (see
- setrlimit(2))
- SIGXFSZ terminate process file size limit exceeded (see
- setrlimit(2))
- SIGVTALRM terminate process virtual time alarm (see
- setitimer(2))
- SIGPROF terminate process profiling timer alarm (see
- setitimer(2))
- SIGWINCH discard signal Window size change
- SIGINFO discard signal status request from keyboard
- SIGUSR1 terminate process User defined signal 1
- SIGUSR2 terminate process User defined signal 2
-
- Once a signal handler is installed, it remains installed until another
- ssiiggvveecc() call is made, or an execve(2) is performed. A signalspecific
- default action may be reset by setting _s_v___h_a_n_d_l_e_r to SIG_DFL. The de
- faults are process termination, possibly with core dump; no action; stop
- ping the process; or continuing the process. See the above signal list
- for each signal's default action. If _s_v___h_a_n_d_l_e_r is SIG_IGN current and
- pending instances of the signal are ignored and discarded.
-
- If a signal is caught during the system calls listed below, the call is
- normally restarted. The call can be forced to terminate prematurely with
- an EINTR error return by setting the SV_INTERRUPT bit in _s_v___f_l_a_g_s. The
- affected system calls include read(2), write(2), sendto(2),
- recvfrom(2), sendmsg(2) and recvmsg(2) on a communications channel or a
- slow device (such as a terminal, but not a regular file) and during a
- wait(2) or ioctl(2). However, calls that have already committed are not
- restarted, but instead return a partial success (for example, a short
- read count).
-
- After a fork(2) or vfork(2) all signals, the signal mask, the signal
- stack, and the restart/interrupt flags are inherited by the child.
-
-
- Execve(2) reinstates the default action for all signals which were caught
- and resets all signals to be caught on the user stack. Ignored signals
- remain ignored; the signal mask remains the same; signals that interrupt
- system calls continue to do so.
-
- NNOOTTEESS
- The mask specified in _v_e_c is not allowed to block SIGKILL or SIGSTOP.
- This is done silently by the system.
-
- The SV_INTERRUPT flag is not available in 4.2BSD, hence it should not be
- used if backward compatibility is needed.
-
- RREETTUURRNN VVAALLUUEESS
- A 0 value indicated that the call succeeded. A -1 return value indicates
- an error occurred and _e_r_r_n_o is set to indicated the reason.
-
- EERRRROORRSS
- SSiiggvveecc() will fail and no new signal handler will be installed if one of
- the following occurs:
-
- [EFAULT] Either _v_e_c or _o_v_e_c points to memory that is not a valid part of
- the process address space.
-
- [EINVAL] _S_i_g is not a valid signal number.
-
- [EINVAL] An attempt is made to ignore or supply a handler for SIGKILL or
- SIGSTOP.
-
- SSEEEE AALLSSOO
- sigaction(2), kill(1), ptrace(2), kill(2), sigprocmask(2),
- sigsuspend(2), sigblock(2), sigsetmask(2), sigpause(2), sigstack(2),
- sigvec(2), sigsetops(3), setjmp(3), siginterrupt(3), tty(4)
-
- EEXXAAMMPPLLEE
- On the VAX-11 The handler routine can be declared:
-
- void handler(sig, code, scp)
- int sig, code;
- struct sigcontext *scp;
-
- Here _s_i_g is the signal number, into which the hardware faults and traps
- are mapped as defined below. _C_o_d_e is a parameter that is either a con
- stant as given below or, for compatibility mode faults, the code provided
- by the hardware (Compatibility mode faults are distinguished from the
- other SIGILL traps by having PSL_CM set in the psl). _S_c_p is a pointer to
- the _s_i_g_c_o_n_t_e_x_t structure (defined in <_s_i_g_n_a_l_._h>), used to restore the
- context from before the signal.
-
- BBUUGGSS
- This manual page is still confusing.
-
- 4th Berkeley Distribution April 29, 1991 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-