sigvec()

NAME

sigvec() - BSD software signal facility

SYNOPSIS

#include <signal.h>
struct sigvec {
	void   (*sa_handler)();
	 int sa_mask;
	 int   sa_flags;
};

int sigvec (int signum, struct sigvec *vec, struct sigvec *ovec)

DESCRIPTION

This interface is made obsolete by sigaction(2). See the sigaction(2) reference page for a description of signals and signal handling and a list of signals.

The sigvec(2) function assigns a handler for a specific signal. If vec is non-zero, it specifies a handler routine and mask to be used when delivering the specified signal. If ovec is non-zero, the routine returns the previous handling information for the signal.

Once a signal handler is installed, it remains installed until another sigvec(2) call is made, or until an exec(2) is performed. A signal-specific default action may be reset by setting sa_handler to SIG_DFL. The defaults are process termination; no action; stopping the process; or continuing the process. See the list in sigaction(2) for each signal's default action. If sa_handler is SIG_IGN, current and pending instances of the signal are ignored and discarded.

After a fork(2) all signals, the signal mask, the signal stack, and the restart/interrupt flags are inherited by the child.

The exec(2) family of routines reinstates the default action for all isgnals 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.

RETURN VALUES

A 0 value indicated that the call succeeded. A -1 return value indicates an error occurred and errno is set to indicated the reason.

ERRORS

The sigvec(2) function will fail and no new signal handler will be installed if one of the following occurs:

[EFAULT]
Either vec or ovec points to memory that is not a valid part of the process address space.
[EINVAL]
Signum is not a valid signal number.
[EINVAL]
An attempt is made to ignore or supply a handler for SIGKILL or SIGSTOP.

NOTES

The mask cannot block SIGKILL or SIGSTOP. This is enforced silently by the system.

This implementation does not suport such flags as SV_INTERRUPT or SV_ONSTACK. The only flag available to sa_flags is SA_NOCLDSTOP. See sigaction(2).

SEE ALSO

kill(1)

kill(2)

setjmp(3)

sigaction(2)

sigblock(2)

signal(2)

sigprocmask(2)

sigsetmask(2)

sigsuspend(2)