SIGACTIO.2
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:7k
源码类别:

操作系统开发

开发平台:

WINDOWS

  1. SIGACTION(2)              Minix Programmer's Manual               SIGACTION(2)
  2. NAME
  3.      sigaction, signal - manage signal state and handlers
  4. SYNOPSIS
  5.      #include <signal.h>
  6.      int sigaction(int sig, const  struct  sigaction  *act,  struct  sigaction
  7.           *oact)
  8.      void (*signal(int sig, void (*handler)(int)))(int);
  9. DESCRIPTION
  10.      Sigaction() is used to examine,  set,  or  modify  the  attributes  of  a
  11.      signal.   The  argument  sig is the signal in question.  The act argument
  12.      points to a structure containing the new attributes of  the  signal,  the
  13.      structure pointed to by oact will receive the old attributes that were in
  14.      effect before the call.
  15.      The act and oact arguments may be NULL to indicate  that  either  no  new
  16.      attributes are to be set, or that the old attributes are not of interest.
  17.      The structure containing the signal attributes is defined  in  <signal.h>
  18.      and looks like this:
  19.           struct sigaction {
  20.               void        (*sa_handler)(int sig);
  21.               sigset_t    sa_mask;
  22.               int         sa_flags;
  23.           };
  24.      The sa_handler field contains the address of a signal handler, a function
  25.      that  is  called  when  the process is signalled, or one of these special
  26.      constants:
  27.      SIG_DFL     Default signal handling is to  be  performed.   This  usually
  28.                  means  that  the  process  is killed, but some signals may be
  29.                  ignored by default.
  30.      SIG_IGN     Ignore the signal.
  31.      The sa_mask field indicates a set of signals that must  be  blocked  when
  32.      the  signal  is  being handled.  Whether the signal sig itself is blocked
  33.      when being handled is not controlled by this mask.   The  mask  is  of  a
  34.      "signal set" type that is to be manipulated by the sigset(3) functions.
  35.      How the signal is handled precisely is specified by bits in sa_flags.  If
  36.      none  of  the  flags  is  set  then the handler is called when the signal
  37.      arrives.  The signal is blocked during  the  call  to  the  handler,  and
  38.      unblocked  when  the  handler returns.  A system call that is interrupted
  39.      returns -1 with errno set to EINTR.  The following bit flags can  be  set
  40.      to modify this behaviour:
  41.                                                                              1
  42. SIGACTION(2)              Minix Programmer's Manual               SIGACTION(2)
  43.      SA_RESETHAND   Reset the signal handler to SIG_DFL  when  the  signal  is
  44.                     caught.
  45.      SA_NODEFER     Do not block the signal on entry to the handler.
  46.      SA_COMPAT      Handle the signal in a way that is compatible with the the
  47.                     old signal() call.
  48.      The old signal() signal system call sets a signal  handler  for  a  given
  49.      signal  and  returns the old signal handler.  No signals are blocked, the
  50.      flags are SA_RESETHAND | SA_NODEFER | SA_COMPAT.  New code should not use
  51.      signal().   Note  that  signal()  and  all  of  the  SA_* flags are Minix
  52.      extensions.
  53.      Signal handlers are reset to SIG_DFL on an execve(2).  Signals  that  are
  54.      ignored stay ignored.
  55.   Signals
  56.      Minix knows about the following signals:
  57.      signal     num    notes   description
  58.      SIGHUP     1      k       Hangup
  59.      SIGINT     2      k       Interrupt (usually DEL or CTRL-C)
  60.      SIGQUIT    3      kc      Quit (usually CTRL-)
  61.      SIGILL     4      kc      Illegal instruction
  62.      SIGTRAP    5      xkc     Trace trap
  63.      SIGABRT    6      kc      Abort program
  64.      SIGFPE     8      k       Floating point exception
  65.      SIGKILL    9      k       Kill
  66.      SIGUSR1    10     k       User defined signal #1
  67.      SIGSEGV    11     kc      Segmentation fault
  68.      SIGUSR2    12     k       User defined signal #2
  69.      SIGPIPE    13     k       Write to a pipe with no reader
  70.      SIGALRM    14     k       Alarm clock
  71.      SIGTERM    15     k       Terminate (default for kill(1))
  72.      SIGCHLD    17     pvi     Child process terminated
  73.      SIGCONT    18     p       Continue if stopped
  74.      SIGSTOP    19     ps      Stop signal
  75.      SIGTSTP    20     ps      Interactive stop signal
  76.      SIGTTIN    21     ps      Background read
  77.      SIGTTOU    22     ps      Background write
  78.      SIGWINCH   23     xvi     Window size change
  79.      The letters in the notes column indicate:
  80.                                                                              2
  81. SIGACTION(2)              Minix Programmer's Manual               SIGACTION(2)
  82.      k    The process is killed if the signal is not caught.
  83.      c    The signal causes a core dump.
  84.      i    The signal is ignored if not caught.
  85.      v    Only Minix-vmd implements this signal.
  86.      x    Minix extension, not defined by POSIX.
  87.      p    These signals are not implemented, but POSIX requires that they  are
  88.           defined.
  89.      s    The process should be stopped, but is killed instead.
  90.      The SIGKILL signal cannot be caught or ignored.  The SIGILL  and  SIGTRAP
  91.      signals  cannot  be  automatically  reset.   The system silently enforces
  92.      these restrictions.  This may or may not be reflected by  the  attributes
  93.      of these signals and the signal masks.
  94.   Types
  95.      POSIX prescribes that <sys/types.h> has the following definition:
  96.           typedef int (*sighandler_t)(int)
  97.      With this type the following declarations can be made:
  98.           sighandler_t sa_handler;
  99.           sighandler_t signal(int sig, sighandler_t handler);
  100.      This may help you to understand the  earlier  declarations  better.   The
  101.      sighandler_t  type  is  also  very  useful  in  old  style C code that is
  102.      compiled by a compiler for standard C.
  103. SEE ALSO
  104.      kill(1), kill(2), pause(2), sigprocmask(2), sigsuspend(2), sigpending(2),
  105.      sigset(3).
  106. DIAGNOSTICS
  107.      Sigaction() returns 0 on success or -1 on error.   Signal()  returns  the
  108.      old handler on success or SIG_ERR on error.  The error code may be:
  109.      EINVAL    Bad signal number.
  110.      EFAULT    Bad act or oact addresses.
  111.                                                                              3
  112. SIGACTION(2)              Minix Programmer's Manual               SIGACTION(2)
  113. AUTHOR
  114.      Kees J. Bot (kjb@cs.vu.nl)
  115.                                                                              4