首页 > 代码库 > sigaction()

sigaction()

NAME
    sigaction - examine and change a signal action

SYNOPSIS
    #include <signal.h>

    int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

DESCRIPTION
    The sigaction() system call is used to change the action taken by a process on receipt of a specific signal.

    signum specifies the signal and can be any valid signal except SIGKILL and SIGSTOP.

    If act is non-null, the new action for signal signum is installed from act. If oldact is non-null, the previous action is saved in oldact.

    The sigaction structure is defined as something like

      struct sigaction {
          void (*sa_handler)(int);
          void (*sa_sigaction)(int, siginfo_t *, void *);
          sigset_t sa_mask;
          int sa_flags;
          void (*sa_restorer)(void);
      }

 

    On some architectures a union is involved: do not assign to both sa_handler and sa_sigaction.

    The sa_restorer element is obsolete and should not be used. POSIX does not specify a sa_restorer element.

    sa_handler specifies the action to be associated with signum and may be SIG_DFL for the default action, SIG_IGN to ignore this signal, or a
    pointer to a signal handling function. This function receives the signal number as its only argument.

    If SA_SIGINFO is specified in sa_flags, then sa_sigaction (instead of sa_handler) specifies the signal-handling function for signum. This func-
    tion receives the signal number as its first argument, a pointer to a siginfo_t as its second argument and a pointer to a ucontext_t (cast to
    void *) as its third argument.

    sa_mask gives a mask of signals which should be blocked during execution of the signal handler. In addition, the signal which triggered the
    handler will be blocked, unless the SA_NODEFER flag is used.

    sa_flags specifies a set of flags which modify the behaviour of the signal handling process. It is formed by the bitwise OR of zero or more of
    the following:

sigaction()