sigaction

SIGACTION(2)    Ð ÑководÑÑво пÑогÑаммиÑÑа Linux    SIGACTION(2)



ÐÐЯ
       sigaction, rt_sigaction - полÑÑÐ°ÐµÑ Ð¸ изменÑеÑ
       обÑабоÑÑик Ñигнала

ÐÐÐÐÐ
       #include <signal.h>

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

   ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÑоÑа ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑв Ð´Ð»Ñ glibc
   (Ñм. feature_test_macros(7)):

       sigaction(): _POSIX_C_SOURCE

       siginfo_t: _POSIX_C_SOURCE >= 199309L

ÐÐÐСÐÐÐÐ
       СиÑÑемнÑй вÑзов sigaction() иÑполÑзÑеÑÑÑ Ð´Ð»Ñ
       Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÑполнÑемого пÑоÑеÑÑом дейÑÑвиÑ
       пÑи полÑÑении опÑеделÑнного Ñигнала
       (ÑпиÑок Ñигналов ÑмоÑÑиÑе в signal(7)).

       Ð signum ÑказÑваеÑÑÑ Ñигнал; Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ
       знаÑение лÑбого коÑÑекÑного Ñигнала за
       иÑклÑÑением SIGKILL и SIGSTOP.

       ÐÑли знаÑение act не Ñавно NULL, Ñо
       ÑÑÑанавливаеÑÑÑ Ð½Ð¾Ð²Ð¾Ðµ дейÑÑвие Ð´Ð»Ñ Ñигнала
       signum из act. ÐÑли знаÑение oldact не Ñавно NULL, Ñо
       пÑедÑдÑÑее дейÑÑвие запиÑÑваеÑÑÑ Ð² oldact.

       СÑÑÑкÑÑÑа sigaction опÑеделена ÑледÑÑÑим
       обÑазом:

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

       ÐÐ»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð°ÑÑиÑекÑÑÑ Ð¸ÑполÑзÑеÑÑÑ union: не
       вÑполнÑйÑе назнаÑение одновÑеменно
       sa_handler и sa_sigaction.

       Ðоле sa_restorer не пÑедназнаÑено длÑ
       иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² пÑиложении (в POSIX sa_restorer
       не опÑеделÑно). ÐÑедназнаÑение ÑÑого полÑ
       немного опиÑано в sigreturn(2).

       sa_handler ÑказÑÐ²Ð°ÐµÑ Ð´ÐµÐ¹ÑÑвие, коÑоÑое должно
       бÑÑÑ ÑвÑзано Ñ signum; Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°Ñение
       SIG_DFL в каÑеÑÑве дейÑÑÐ²Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ, SIG_IGN,
       ÑÑÐ¾Ð±Ñ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ ÑÑÐ¾Ñ Ñигнал, или пÑинимаÑÑ
       ÑказаÑÐµÐ»Ñ Ð½Ð° ÑÑнкÑÐ¸Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñигналом.
       ÐÐ°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ð½Ð¾Ð¼ÐµÑ Ñигнала в
       каÑеÑÑве Ñвоего единÑÑвенного аÑгÑменÑа.

       ÐÑли в sa_flags Ñказан SA_SIGINFO, Ñо sa_sigaction (вмеÑÑо
       sa_handler) задаÑÑ ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑабоÑки Ñигнала
       signum. РпеÑвом аÑгÑменÑе ÑÑнкÑÐ¸Ñ Ð¿ÑинимаеÑ
       Ð½Ð¾Ð¼ÐµÑ Ñигнала, во вÑоÑом â ÑказаÑÐµÐ»Ñ Ð½Ð°
       siginfo_t и в ÑÑеÑÑем â ÑказаÑÐµÐ»Ñ Ð½Ð° ucontext_t
       (пÑиведÑннÑй к void *) (вообÑе,
       ÑÑнкÑиÑ-обÑабоÑÑик не иÑполÑзÑеÑÑÑ ÑÑеÑий
       аÑгÑменÑ. ÐодÑобней о ucontext_t ÑмоÑÑиÑе в
       getcontext(3)).

       Ð sa_mask задаÑÑÑÑ Ð¼Ð°Ñка Ñигналов, коÑоÑÑе
       Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑÑÑ (Ñ.е. добавлÑеÑÑÑ Ðº
       маÑке Ñигналов ниÑи, в коÑоÑой вÑзÑваеÑÑÑ
       обÑабоÑÑик Ñигнала) пÑи вÑполнении
       обÑабоÑÑика Ñигнала. Также бÑдеÑ
       блокиÑоваÑÑÑÑ Ð¸ Ñигнал, вÑзвавÑий запÑÑк
       обÑабоÑÑика, еÑли ÑолÑко не бÑл иÑполÑзован
       Ñлаг SA_NODEFER.

       Ð flag ÑказÑваеÑÑÑ Ð½Ð°Ð±Ð¾Ñ Ñлагов, коÑоÑÑе
       изменÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ Ñигнала. Ðн ÑоÑмиÑÑеÑÑÑ
       побиÑовÑм ÐÐРиз ÑледÑÑÑÐ¸Ñ Ñлагов:

           SA_NOCLDSTOP
                  ÐÑли знаÑение signum Ñавно SIGCHLD, Ñо
                  Ñведомление об оÑÑановке доÑеÑнего
                  пÑоÑеÑÑа (Ñ.е., в ÑÐµÑ ÑлÑÑаÑÑ, когда
                  доÑеÑний пÑоÑеÑÑ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ñигнал SIGSTOP,
                  SIGTSTP, SIGTTIN или SIGTTOU) или
                  возобновлении ÑабоÑÑ (Ñ.е., когда
                  доÑеÑний пÑоÑеÑÑ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ SIGCONT) не
                  бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑено (Ñм. wait(2)). ÐÑÐ¾Ñ Ñлаг
                  Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение ÑолÑко когда
                  ÑÑÑановлен обÑабоÑÑик SIGCHLD.

           SA_NOCLDWAIT (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6)
                  ÐÑли знаÑение signum Ñавно SIGCHLD, Ñо
                  доÑеÑние пÑоÑеÑÑÑ Ð½Ðµ бÑдÑÑ Ð¿ÐµÑеводиÑÑÑÑ
                  в ÑоÑÑоÑние зомби пÑи завеÑÑении.
                  СмоÑÑиÑе Ñакже waitpid(2). ÐÑÐ¾Ñ Ñлаг имееÑ
                  знаÑение ÑолÑко когда ÑÑÑановлен
                  обÑабоÑÑик SIGCHLD или когда
                  обÑабоÑÑик Ñигнала ÑÑÑановлен в
                  SIG_DFL.

                  ÐÑли Ñлаг SA_NOCLDWAIT не задан пÑи
                  ÑÑÑановке обÑабоÑÑика SIGCHLD, Ñо по
                  POSIX.1 оÑÑаÑÑÑÑ Ð½ÐµÐ¾Ð¿ÑеделÑннÑм, бÑÐ´ÐµÑ Ð»Ð¸
                  генеÑиÑоваÑÑÑÑ Ñигнал SIGCHLD пÑи
                  завеÑÑении доÑеÑнего пÑоÑеÑÑа. Ð Linux
                  Ñигнал SIGCHLD в ÑÑом ÑлÑÑае генеÑиÑÑеÑÑÑ;
                  в некоÑоÑÑÑ Ð´ÑÑÐ³Ð¸Ñ ÑеализаÑиÑÑ ÑÑо не
                  делаеÑÑÑ.

           SA_NODEFER
                  Ðе пÑепÑÑÑÑвоваÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñигнала
                  пÑи его обÑабоÑке обÑабоÑÑиком
                  Ñигнала. ÐÑÐ¾Ñ Ñлаг Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
                  ÑолÑко когда ÑÑÑановлен обÑабоÑÑик.
                  Флаг SA_NOMASK ÑвлÑеÑÑÑ ÑÑÑаÑевÑим
                  Ñинонимом данного Ñлага.

           SA_ONSTACK
                  ÐÑзÑваÑÑ Ð¾Ð±ÑабоÑÑик Ñигнала в
                  дополниÑелÑном ÑÑеке Ñигналов,
                  пÑедоÑÑавленном sigaltstack(2). ÐÑли
                  дополниÑелÑнÑй ÑÑек недоÑÑÑпен, Ñо
                  бÑÐ´ÐµÑ Ð¸ÑполÑзован ÑÑек по ÑмолÑаниÑ.
                  ÐÑÐ¾Ñ Ñлаг Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение ÑолÑко
                  когда ÑÑÑановлен обÑабоÑÑик.

           SA_RESETHAND
                  ÐоÑÑÑановиÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ Ñигнала в
                  знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ñле вÑода в
                  обÑабоÑÑик Ñигнала. ÐÑÐ¾Ñ Ñлаг имееÑ
                  знаÑение ÑолÑко когда ÑÑÑановлен
                  обÑабоÑÑик. Флаг SA_ONESHOT ÑвлÑеÑÑÑ
                  ÑÑÑаÑевÑим Ñинонимом данного Ñлага.

           SA_RESTART
                  ÐбеÑпеÑиваÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑовмеÑÑимое Ñ
                  ÑеманÑикой Ñигналов BSD, позволÑÑ
                  некоÑоÑÑм ÑиÑÑемнÑм вÑзовам
                  пеÑезапÑÑкаÑÑÑÑ Ð² Ñо вÑемÑ, как идеÑ
                  обÑабоÑка Ñигналов. ÐÑÐ¾Ñ Ñлаг имееÑ
                  знаÑение ÑолÑко когда ÑÑÑановлен
                  обÑабоÑÑик. РпеÑезапÑÑке ÑиÑÑемнÑÑ
                  вÑзовов ÑмоÑÑиÑе в signal(7).

           SA_RESTORER
                  Ðе пÑедназнаÑен Ð´Ð»Ñ Ð¿Ñиложений.
                  ÐаннÑй Ñлаг иÑполÑзÑеÑÑÑ Ð²
                  библиоÑÐµÐºÐ°Ñ C Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð½Ð° Ñо, ÑÑо
                  поле sa_restorer ÑодеÑÐ¶Ð¸Ñ Ð°Ð´ÑеÑ
                  «пÑÑжковÑм моÑÑиком в Ñигнал" (signal
                  trampoline). ÐодÑобней ÑмоÑÑиÑе в sigreturn(2).

           SA_SIGINFO (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
                  ÐбÑабоÑÑик Ñигнала ÑÑебÑÐµÑ ÑÑÑÑ
                  аÑгÑменÑов, а не одного. Ð ÑÑом ÑлÑÑае
                  надо иÑполÑзоваÑÑ Ð¿Ð°ÑамеÑÑ sa_sigaction
                  вмеÑÑо sa_handler. ÐÑÐ¾Ñ Ñлаг имееÑ
                  знаÑение ÑолÑко когда ÑÑÑановлен
                  обÑабоÑÑик.

       ÐÑгÑÐ¼ÐµÐ½Ñ siginfo_t в sa_sigaction пÑедÑÑавлÑÐµÑ Ñобой
       ÑÑÑÑкÑÑÑÑ Ñо ÑледÑÑÑими полÑми:

           siginfo_t {
               int      si_signo;     /* ÐÐ¾Ð¼ÐµÑ Ñигнала */
               int      si_errno;     /* ÐнаÑение errno */
               int      si_code;      /* Ðод Ñигнала */
               int      si_trapno;    /* ÐÐ¾Ð¼ÐµÑ Ð»Ð¾Ð²ÑÑки, коÑоÑÑÑ Ð²Ñзвал
                                         аппаÑаÑнÑй Ñигнал
                                         (не иÑполÑзÑеÑÑÑ Ð½Ð° болÑÑинÑÑве
                                         аÑÑиÑекÑÑÑ) */
               pid_t    si_pid;       /* ID пÑоÑеÑÑа, поÑлавÑего Ñигнал */
               uid_t    si_uid;       /* ID ÑеалÑного полÑзоваÑÐµÐ»Ñ Ð¿ÑоÑеÑÑа,
                                         поÑлавÑего Ñигнал */
               int      si_status;    /* ÐÑÑодное знаÑение или Ð½Ð¾Ð¼ÐµÑ Ñигнала */
               clock_t  si_utime;     /* ÐÑполÑзованное полÑзоваÑелÑÑкое вÑÐµÐ¼Ñ */
               clock_t  si_stime;     /* ÐÑполÑзованное ÑиÑÑемное вÑÐµÐ¼Ñ */
               sigval_t si_value;     /* ÐнаÑение Ñигнала */
               int      si_int;       /* Сигнал POSIX.1b */
               void    *si_ptr;       /* Сигнал POSIX.1b */
               int      si_overrun;   /* СÑÑÑÑик пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑаймеÑа;
                                         ÑаймеÑÑ POSIX.1b */
               int      si_timerid;   /* ID ÑаймеÑа; ÑаймеÑÑ POSIX.1b */
               void    *si_addr;      /* ÐдÑÐµÑ Ð¿Ð°Ð¼ÑÑи, пÑиводÑÑий к оÑибке */
               long     si_band;      /* ÐнÑÑÑеннее ÑобÑÑие (бÑл int в
                                         glibc 2.3.2 и более ÑанниÑ) */
               int      si_fd;        /* ФайловÑй деÑкÑипÑÐ¾Ñ */
               short    si_addr_lsb;  /* Ðаименее знаÑимÑй Ð±Ð¸Ñ Ð°Ð´ÑеÑа
                                         (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.32) */
               void    *si_lower;     /* ÐижнÑÑ Ð³ÑаниÑа пÑи наÑÑÑении адÑеÑа
                                         (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.19) */
               void    *si_upper;     /* ÐеÑÑнÑÑ Ð³ÑаниÑа пÑи наÑÑÑении адÑеÑа
                                         (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.19) */
               int      si_pkey;      /* ÐлÑÑа заÑиÑÑ Ð² PTE, коÑоÑÑй пÑивÑл
                                         к оÑибке (наÑÐ¸Ð½Ð°Ñ Ñ Linux 4.6) */
               void    *si_call_addr; /* ÐдÑÐµÑ Ð¸Ð½ÑÑÑÑкÑии ÑиÑÑемного вÑзова
                                         (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.5) */
               int      si_syscall;   /* ÐолиÑеÑÑво попÑÑок ÑиÑÑемного вÑзова
                                         (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.5) */
               unsigned int si_arch;  /* ÐÑÑиÑекÑÑÑа пÑÑавÑегоÑÑ ÑиÑÑемного вÑзова
                                         (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.5) */
           }

       ÐÐ¾Ð»Ñ si_signo, si_errno и si_code опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð´Ð»Ñ Ð²ÑеÑ
       Ñигналов. (si_errno обÑÑно не иÑполÑзÑеÑÑÑ Ð²
       Linux.) ÐÑÑавÑаÑÑÑ ÑаÑÑÑ ÑÑÑÑкÑÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ
       Ñобой обÑединение, поÑÑÐ¾Ð¼Ñ Ð½Ñжно ÑиÑаÑÑ
       ÑолÑко Ñе полÑ, коÑоÑÑе имеÑÑ ÑмÑÑл длÑ
       заданного Ñигнала:

       * ÐÐ»Ñ Ñигналов, поÑÑлаемÑÑ kill(3) и sigqueue(3),
         заполнÑÑÑÑÑ si_pid и si_uid. Также Ð´Ð»Ñ Ñигналов,
         поÑÑлаемÑÑ sigqueue(3), заполнÑÑÑÑÑ si_int и si_ptr
         знаÑениÑми, задаваемÑми оÑпÑавиÑелем
         Ñигнала; подÑобней ÑмоÑÑиÑе sigqueue(3).

       * ÐÐ»Ñ Ñигналов, поÑÑлаемÑÑ ÑаймеÑами POSIX.1b
         (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6), заполнÑÑÑÑÑ si_overrun и
         si_timerid. Ðоле si_timerid ÑвлÑеÑÑÑ Ð²Ð½ÑÑÑенним
         иденÑиÑикаÑоÑом, коÑоÑÑй иÑполÑзÑеÑÑÑ ÑдÑом
         Ð´Ð»Ñ ÑазлиÑÐµÐ½Ð¸Ñ ÑаймеÑов; ÑÑо не
         иденÑиÑикаÑÐ¾Ñ ÑаймеÑа, возвÑаÑаемого
         timer_create(2). Ðоле si_overrun оÑÑÐ°Ð¶Ð°ÐµÑ ÑÑÑÑÑик
         пÑевÑÑÐµÐ½Ð¸Ñ ÑаймеÑа; ÑÑÑ Ð¶Ðµ инÑоÑмаÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾
         полÑÑиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð²Ñзова timer_getoverrun(2). ÐÑи
         Ð¿Ð¾Ð»Ñ ÑвлÑÑÑÑÑ Ð½ÐµÑÑандаÑÑнÑм ÑаÑÑиÑением Linux.

       * ÐÐ»Ñ Ñигналов, поÑÑлаемÑÑ Ñведомлением
         оÑеÑеди ÑообÑений (Ñм. опиÑание SIGEV_SIGNAL в
         mq_notify(3)), заполнÑÑÑÑÑ si_int/si_ptr знаÑением
         sigev_value, пÑедоÑÑавлÑемÑм mq_notify(3); si_pid —
         знаÑением иденÑиÑикаÑоÑа пÑоÑеÑÑа,
         оÑпÑавивÑего ÑообÑение; si_uid — знаÑением
         ÑеалÑного иденÑиÑикаÑоÑа полÑзоваÑелÑ,
         оÑпÑавивÑего ÑообÑение.

       * ÐÐ»Ñ SIGCHLD заполнÑÑÑÑÑ si_pid, si_uid, si_status, si_utime и
         si_stime, пÑедоÑÑавлÑÑÑие инÑоÑмаÑÐ¸Ñ Ð¾ поÑомке.
         Рполе si_pid ÑказÑваеÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑ
         пÑоÑеÑÑа поÑомка; в si_uid â ÑеалÑнÑй
         полÑзоваÑелÑÑкий иденÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ñомка. Ð
         поле si_status ÑодеÑжиÑÑÑ ÐºÐ¾Ð´ завеÑÑениÑ
         поÑомка (еÑли si_code Ñавно CLD_EXITED) или номеÑ
         Ñигнала, коÑоÑÑй вÑзвал изменение
         ÑоÑÑоÑÐ½Ð¸Ñ Ð¿ÑоÑеÑÑа. ÐÐ¾Ð»Ñ si_utime и si_stime ÑодеÑжаÑ
         ÑиÑÑемное и полÑзоваÑелÑÑкое вÑÐµÐ¼Ñ Ð¦Ð,
         заÑÑаÑенное пÑоÑеÑÑом-поÑомком; ÑÑи Ð¿Ð¾Ð»Ñ Ð½Ðµ
         ÑодеÑÐ¶Ð°Ñ Ð²ÑемÑ, иÑполÑзованное на
         ожидание поÑомков (в оÑлиÑие Ð¾Ñ getrusage(2) и
         times(2)). Ð ÑдÑÐ°Ñ Ð´Ð¾ веÑÑии 2.6 и наÑÐ¸Ð½Ð°Ñ Ñ 2.6.27
         ÑÑи Ð¿Ð¾Ð»Ñ ÑодеÑÐ¶Ð°Ñ Ð²ÑÐµÐ¼Ñ Ð¦Ð Ð² единиÑаÑ
         sysconf(_SC_CLK_TCK). Ð ÑдÑÐ°Ñ 2.6 до 2.6.27 оÑибоÑно
         ÑÑиÑалоÑÑ, ÑÑо ÑÑи Ð¿Ð¾Ð»Ñ ÑодеÑÐ¶Ð°Ñ Ð²ÑÐµÐ¼Ñ Ð²
         единиÑÐ°Ñ (наÑÑÑаиваемÑÑ) ÑиÑÑемнÑÑ Ð¼Ð¸Ð³Ð¾Ð²
         (jiffy) (ÑмоÑÑиÑе time(7)).

       * ÐÑи SIGILL, SIGFPE, SIGSEGV, SIGBUS и SIGTRAP заполнÑеÑÑÑ
         si_addr адÑеÑом оÑибки. Ðа некоÑоÑÑÑ
         аÑÑиÑекÑÑÑÐ°Ñ Ð´Ð»Ñ ÑÑи Ñигналов Ñакже
         заполнÑеÑÑÑ Ð¿Ð¾Ð»Ðµ si_trapno.

         ÐекоÑоÑÑе оÑделÑнÑе ваÑианÑÑ SIGBUS, в ÑаÑÑноÑÑи
         BUS_MCEERR_AO и BUS_MCEERR_AR, Ñакже заполнÑÑÑ
         si_addr_lsb. ÐÑо поле ÑказÑÐ²Ð°ÐµÑ Ð½Ð° наименее
         знаÑимÑй Ð±Ð¸Ñ ÑообÑаемого адÑеÑа и поÑÑомÑ
         показÑÐ²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾Ð²ÑеждениÑ. ÐапÑимеÑ,
         еÑли бÑла повÑеждена ÑÑÑаниÑа Ñеликом, Ñо
         si_addr_lsb ÑодеÑÐ¶Ð¸Ñ log2(sysconf(_SC_PAGESIZE)). Ðогда
         доÑÑавлÑеÑÑÑ SIGTRAP в оÑÐ²ÐµÑ Ð½Ð° ÑобÑÑие ptrace(2)
         (PTRACE_EVENT_foo), Ñо si_addr не заполнÑеÑÑÑ, но
         заполнÑÑÑÑÑ si_pid и si_uid ÑооÑвеÑÑÑвÑÑÑими ID
         пÑоÑеÑÑа и полÑзоваÑелÑ, оÑвеÑÑÑвенного за
         полÑÑение ÑÑапа. Ð ÑлÑÑае seccomp(2), ÑÑаÑÑиÑÑемÑй
         бÑÐ´ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½ как полÑÑаÑÑий ÑобÑÑие.
         BUS_MCERR_* и si_addr_lsb ÑвлÑÑÑÑÑ ÑаÑÑиÑениÑми Linux.

         ÐÐ»Ñ Ð¾ÑделÑного ваÑианÑа SEGV_BNDERR из SIGSEGV
         заполнÑÑÑÑÑ si_lower и si_upper.

         ÐÐ»Ñ Ð¾ÑделÑного ваÑианÑа SEGV_PKUERR из SIGSEGV
         заполнÑеÑÑÑ si_pkey.

       * ÐÐ»Ñ SIGIO/SIGPOLL (ÑÐ¸Ð½Ð¾Ð½Ð¸Ð¼Ñ Ð² Linux) заполнÑÑÑÑÑ
         si_band и si_fd. СобÑÑие si_band пÑедÑÑавлÑÐµÑ Ñобой
         биÑовÑÑ Ð¼Ð°ÑкÑ, ÑодеÑжаÑÑÑ Ñе же знаÑениÑ,
         коÑоÑÑе заполнÑÑÑÑÑ Ð² поле revents вÑзовом
         poll(2). Ðоле si_fd ÑодеÑÐ¶Ð¸Ñ ÑайловÑй деÑкÑипÑоÑ,
         Ð´Ð»Ñ ÐºÐ¾ÑоÑого пÑоизоÑло ÑобÑÑие
         ввода-вÑвода; дополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑиÑ
         ÑмоÑÑиÑе в опиÑании F_SETSIG на ÑÑÑаниÑе fcntl(2).

       * ÐÐ»Ñ SIGSYS, генеÑиÑÑемого (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.5),
         когда ÑилÑÑÑ seccomp возвÑаÑÐ°ÐµÑ SECCOMP_RET_TRAP,
         заполнÑÑÑÑÑ si_call_addr, si_syscall, si_arch, si_errno и
         дÑÑгие полÑ, как опиÑÑваеÑÑÑ Ð² seccomp(2).

       Рполе si_code ÑодеÑжиÑÑÑ Ð·Ð½Ð°Ñение (не маÑка
       биÑов), опÑеделÑÑÑее пÑиÑÐ¸Ð½Ñ Ð¾ÑпÑавки
       Ñигнала. ÐÑи ÑобÑÑии ptrace(2) в si_code бÑдеÑ
       ÑодеÑжаÑÑÑÑ SIGTRAP и ÑобÑÑие ptrace в ÑÑаÑÑем байÑе:

           (SIGTRAP | PTRACE_EVENT_foo << 8).

       ÐÐ»Ñ Ð¾Ð±ÑÑного Ñигнала в ÑледÑÑÑей ÑаблиÑе
       пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð·Ð½Ð°ÑениÑ, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð² si_code
       Ð´Ð»Ñ Ð»Ñбого Ñигнала вмеÑÑе Ñ Ð¿ÑиÑиной
       Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ñигнала:

           SI_USER
                  kill(2).

           SI_KERNEL
                  поÑÑлаеÑÑÑ ÑдÑом

           SI_QUEUE
                  sigqueue(3).

           SI_TIMER
                  ÑÐ°Ð¹Ð¼ÐµÑ POSIX иÑÑÑк.

           SI_MESGQ (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.6)
                  изменилоÑÑ ÑоÑÑоÑние оÑеÑеди
                  ÑообÑений POSIX; Ñм. mq_notify(3).

           SI_ASYNCIO
                  AIO завеÑÑÑн.

           SI_SIGIO
                  Queued SIGIO (ÑолÑко в ÑдÑÐ°Ñ Ð´Ð¾ Linux 2.2;
                  наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4 SIGIO/SIGPOLL заполнÑÑÑ
                  si_code как опиÑано вÑÑе).

           SI_TKILL (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4.19)
                  tkill(2)  или tgkill(2).

       СледÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² si_code
       Ð´Ð»Ñ Ñигнала SIGILL:

           ILL_ILLOPC
                  ÐекоÑÑекÑнÑй код инÑÑÑÑкÑии.

           ILL_ILLOPN
                  ÐекоÑÑекÑнÑй опеÑанд.

           ILL_ILLADR
                  ÐекоÑÑекÑнÑй Ñежим адÑеÑаÑии.

           ILL_ILLTRP
                  ÐекоÑÑекÑÐ½Ð°Ñ Ð»Ð¾Ð²ÑÑка.

           ILL_PRVOPC
                  ÐÑивилегиÑованнÑй код инÑÑÑÑкÑии.

           ILL_PRVREG
                  ÐÑивилегиÑованнÑй ÑегиÑÑÑ.

           ILL_COPROC
                  ÐÑибка ÑопÑоÑеÑÑоÑа.

           ILL_BADSTK
                  ÐнÑÑÑеннÑÑ Ð¾Ñибка ÑÑека.

       СледÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² si_code
       Ð´Ð»Ñ Ñигнала SIGFPE:

           FPE_INTDIV
                  Ðеление на Ð½Ð¾Ð»Ñ Ð¿Ñи ÑабоÑе Ñ ÑелÑми
                  ÑиÑлами.

           FPE_INTOVF
                  ÐеÑеполнение пÑи ÑабоÑе Ñ ÑелÑми
                  ÑиÑлами.

           FPE_FLTDIV
                  Ðеление на Ð½Ð¾Ð»Ñ Ð¿Ñи ÑабоÑе Ñ ÑиÑлами Ñ
                  плаваÑÑей запÑÑой.

           FPE_FLTOVF
                  ÐеÑеполнение пÑи ÑабоÑе Ñ ÑиÑлами Ñ
                  плаваÑÑей запÑÑой.

           FPE_FLTUND
                  ÐеÑваÑка знаÑÐµÐ½Ð¸Ñ Ð¿Ñи ÑабоÑе Ñ ÑиÑлами
                  Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей запÑÑой.

           FPE_FLTRES
                  ÐеÑоÑнÑй ÑезÑлÑÑÐ°Ñ Ð¿Ñи ÑабоÑе Ñ ÑиÑлами Ñ
                  плаваÑÑей запÑÑой.

           FPE_FLTINV
                  ÐепÑавилÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¿Ñи ÑабоÑе Ñ
                  ÑиÑлами Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей запÑÑой.

           FPE_FLTSUB
                  ÐÐ½Ð´ÐµÐºÑ Ð²Ð½Ðµ ÑазÑеÑеннÑÑ Ð¿Ñеделов пÑи
                  ÑабоÑе Ñ ÑиÑлами Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей запÑÑой.

       СледÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² si_code
       Ð´Ð»Ñ Ñигнала SIGSEGV:

           SEGV_MAPERR
                  ÐдÑÐµÑ Ð½Ðµ ÑооÑвеÑÑÑвÑÐµÑ Ð¾Ð±ÑекÑÑ.

           SEGV_ACCERR
                  ÐекоÑÑекÑнÑе пÑава на оÑобÑажÑннÑй
                  обÑекÑ.

           SEGV_BNDERR (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.19)
                  ÐÑибка пÑовеÑки гÑÐ°Ð½Ð¸Ñ Ð°Ð´ÑеÑа.

           SEGV_PKUERR (наÑÐ¸Ð½Ð°Ñ Ñ Linux 4.6)
                  ÐÑибка клÑÑа заÑиÑÑ.

       СледÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² si_code
       Ð´Ð»Ñ Ñигнала SIGBUS:

           BUS_ADRALN
                  ÐекоÑÑекÑное вÑÑавнивание адÑеÑа.

           BUS_ADRERR
                  ÐеÑÑÑеÑÑвÑÑÑий ÑизиÑеÑкий адÑеÑ.

           BUS_OBJERR
                  ÐппаÑаÑÐ½Ð°Ñ Ð¾Ñибка, ÑпеÑиÑиÑÐ½Ð°Ñ Ð´Ð»Ñ
                  обÑекÑа.

           BUS_MCEERR_AR (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.32)
                  маÑинной пÑовеÑкой ÑÑÑÑанена
                  аппаÑаÑÐ½Ð°Ñ Ð¾Ñибка памÑÑи; ÑÑебÑеÑÑÑ
                  дейÑÑвие

           BUS_MCEERR_AO (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.32)
                  в пÑоÑеÑÑе обнаÑÑжена аппаÑаÑнаÑ
                  оÑибка памÑÑи, но не ÑÑÑÑанена;
                  дейÑÑвие не обÑзаÑелÑно

       СледÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² si_code
       Ð´Ð»Ñ Ñигнала SIGTRAP:

           TRAP_BRKPT
                  ТоÑка оÑÑанова пÑоÑеÑÑа.

           TRAP_TRACE
                  ÐовÑÑка оÑладки пÑоÑеÑÑа.

           TRAP_BRANCH (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4)
                  ÐÑоÑеÑÑ Ð¿Ð¾Ð¹Ð¼Ð°Ð½ в веÑÐ²Ñ Ð»Ð¾Ð²ÑÑки.

           TRAP_HWBKPT (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4)
                  ÐппаÑаÑÐ½Ð°Ñ ÑоÑка пÑеÑÑваниÑ/ÑлежениÑ.

       СледÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² si_code
       Ð´Ð»Ñ Ñигнала SIGCHLD:

           CLD_EXITED
                  ÐоÑеÑний пÑоÑеÑÑ Ð·Ð°Ð²ÐµÑÑил ÑабоÑÑ.

           CLD_KILLED
                  РабоÑа доÑеÑнего пÑоÑеÑÑа бÑла
                  пÑеÑвана.

           CLD_DUMPED
                  ÐоÑеÑний пÑоÑеÑÑ Ð·Ð°Ð²ÐµÑÑилÑÑ
                  некоÑÑекÑно.

           CLD_TRAPPED
                  СÑабоÑала ловÑÑка в оÑлаживаемом
                  доÑеÑнем пÑоÑеÑÑе.

           CLD_STOPPED
                  ÐоÑеÑний пÑоÑеÑÑ Ð¾ÑÑановлен.

           CLD_CONTINUED (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.9)
                  ÐÑÑановленнÑй доÑеÑний пÑоÑеÑÑ
                  пÑодолжил ÑабоÑÑ.

       СледÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² si_code
       Ð´Ð»Ñ Ñигнала SIGIO/SIGPOLL:

           POLL_IN
                  ÐÑÑÑ Ð²ÑоднÑе даннÑе.

           POLL_OUT
                  ÐÑвободилиÑÑ Ð²ÑÑоднÑе бÑÑеÑÑ.

           POLL_MSG
                  ÐÑÑÑ Ð²Ñодное ÑообÑение.

           POLL_ERR
                  ÐÑибка ввода-вÑвода.

           POLL_PRI
                  ÐÑÑÑ Ð²ÑоднÑе даннÑе вÑÑокого
                  пÑиоÑиÑеÑа.

           POLL_HUP
                  УÑÑÑойÑÑво оÑклÑÑено.

       СледÑÑÑее знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð²
       si_code Ð´Ð»Ñ Ñигнала SIGSYS:

           SYS_SECCOMP (наÑÐ¸Ð½Ð°Ñ Ñ Linux 3.5)
                  ÐÐ¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¿Ð¾ пÑÐ°Ð²Ð¸Ð»Ñ ÑилÑÑÑаÑии
                  seccomp(2).

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       ÐÑи ÑÑпеÑном вÑполнении sigaction() возвÑаÑаеÑÑÑ
       0; пÑи оÑибке возвÑаÑаеÑÑÑ -1, а в errno
       ÑодеÑжиÑÑÑ ÐºÐ¾Ð´ оÑибки.

ÐШÐÐÐÐ
       EFAULT act или oldact ÑказÑваÑÑ Ð½Ð° памÑÑÑ, коÑоÑаÑ
              не ÑвлÑеÑÑÑ ÑаÑÑÑÑ Ð°Ð´ÑеÑного пÑоÑÑÑанÑÑва
              пÑоÑеÑÑа.

       EINVAL Указан некоÑÑекÑнÑй Ñигнал. Также
              оÑибка бÑÐ´ÐµÑ ÑгенеÑиÑована, еÑли
              пÑоизведена попÑÑка измениÑÑ Ð´ÐµÐ¹ÑÑвие
              Ð´Ð»Ñ Ñигналов SIGKILL или SIGSTOP, коÑоÑÑе не
              могÑÑ Ð±ÑÑÑ Ð¿ÐµÑеÑваÑÐµÐ½Ñ Ð¸Ð»Ð¸ игноÑиÑованÑ.

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       POSIX.1-2001, POSIX.1-2008, SVr4.

ÐÐÐÐЧÐÐÐЯ
       ÐоÑомок, ÑозданнÑй Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ fork(2), наÑледÑеÑ
       ÑеакÑÐ¸Ñ Ð½Ð° ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð¾Ñ Ñвоего ÑодиÑелÑ. ÐÑи
       execve(2) ÑеакÑÐ¸Ñ Ð½Ð° ÑÐ¸Ð³Ð½Ð°Ð»Ñ ÑÑÑанавливаеÑÑÑ Ð²
       знаÑение по ÑмолÑаниÑ; ÑеакÑÐ¸Ñ Ð½Ð°
       игноÑиÑÑемÑе ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð½Ðµ изменÑеÑÑÑ.

       Ð ÑооÑвеÑÑÑвии Ñ POSIX поведение пÑоÑеÑÑа поÑле
       игноÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñигнала SIGFPE, SIGILL или SIGSEGV
       не опÑеделено, еÑли ÑÑи ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð½Ðµ бÑли
       поÑÐ»Ð°Ð½Ñ Ð¿Ñи помоÑи ÑÑнкÑий kill(2) или raise(3).
       Ðеление Ñелого ÑиÑла на Ð½Ð¾Ð»Ñ Ð¸Ð¼ÐµÐµÑ
       непÑедÑказÑемÑй ÑезÑлÑÑаÑ. РнекоÑоÑÑÑ
       аÑÑиÑекÑÑÑÐ°Ñ ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ñигнала
       SIGFPE. (Также, деление Ñамого болÑÑого по
       модÑÐ»Ñ Ð¾ÑÑиÑаÑелÑного ÑиÑла на -1 Ñоже можеÑ
       пÑиводиÑÑ Ðº SIGFPE.)  ÐгноÑиÑование ÑÑого
       Ñигнала Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к поÑвлениÑ
       беÑконеÑного Ñикла.

       POSIX.1-1990 запÑеÑÐ°ÐµÑ ÑÑÑÐ°Ð½Ð¾Ð²ÐºÑ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð´Ð»Ñ
       Ñигнала SIGCHLD в SIG_IGN. Ð POSIX.1-2001 и новÑÑ Ð²ÐµÑÑиÑÑ
       ÑÑандаÑÑа допÑÑкаеÑÑÑ ÑÐ°ÐºÐ°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ,
       поÑÑÐ¾Ð¼Ñ Ð¸Ð³Ð½Ð¾ÑиÑование SIGCHLD можно
       иÑполÑзоваÑÑ Ð´Ð»Ñ Ð½ÐµÐ´Ð¾Ð¿ÑÑÐµÐ½Ð¸Ñ ÑозданиÑ
       зомби (ÑмоÑÑиÑе wait(2)). Тем не менее,
       поведение BSD и System V по игноÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ SIGCHLD
       ÑазлиÑаеÑÑÑ, поÑÑÐ¾Ð¼Ñ ÐµÑÑÑ ÑолÑко один
       пеÑеноÑимÑй ÑпоÑоб ÑбедиÑÑÑÑ, ÑÑо
       завеÑÑивÑийÑÑ Ð¿Ð¾Ñомок не ÑÑал зомби â
       поймаÑÑ Ñигнал SIGCHLD и вÑполниÑÑ wait(2) или
       подобнÑй вÑзов.

       Ð POSIX.1-1990 Ñказан ÑолÑко SA_NOCLDSTOP. Ð POSIX.1-2001
       Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ SA_NOCLDSTOP, SA_NOCLDWAIT, SA_NODEFER, SA_ONSTACK,
       SA_RESETHAND, SA_RESTART и SA_SIGINFO. ÐÑполÑзование в
       пÑиложениÑÑ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð·Ð½Ð°Ñений в sa_flags
       Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ñложнее пеÑенеÑÑи на ÑÑаÑÑе
       ÑеализаÑии UNIX.

       Флаг SA_RESETHAND ÑовмеÑÑим Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑм
       Ñлагом из SVr4.

       Флаг SA_NODEFER ÑовмеÑÑим Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÐµÐ½Ð½Ñм Ñлагом
       SVr4 в ÑдÑе веÑÑии 1.3.9 и более поздниÑ. Ð ÑÑаÑÑÑ
       вÑпÑÑÐºÐ°Ñ ÑдÑа Linux позволÑли пÑинимаÑÑ Ð¸
       обÑабаÑÑваÑÑ Ð»ÑбÑе ÑигналÑ, а не ÑолÑко Ñе,
       обÑабоÑка коÑоÑÑÑ Ñже задана (на деле ÑÑо
       пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº игноÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑÑановок sa_mask).

       ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð°Ð´ÑеÑа ÑекÑÑего обÑабоÑÑика
       Ñигнала можно иÑполÑзоваÑÑ Ð²Ñзов sigaction(),
       Ñказав NULL в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ Ð²ÑоÑого
       аÑгÑменÑа. ÐÑÐ¾Ñ Ð²Ñзов можно Ñакже
       иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки доÑÑÑпноÑÑи ÑÑого
       Ñипа Ñигнала в конкÑеÑной ÑиÑÑеме, вÑзвав
       его Ñ Ð²ÑоÑÑм и ÑÑеÑÑим аÑгÑменÑами, ÑавнÑми
       NULL.

       Ðевозможно заблокиÑоваÑÑ ÑÐ¸Ð³Ð½Ð°Ð»Ñ SIGKILL или
       SIGSTOP (Ñказав Ð¸Ñ Ð² sa_mask). ÐопÑÑки ÑÑо ÑделаÑÑ
       бÑдÑÑ Ð¿ÑоÑÑо игноÑиÑоваÑÑÑÑ.

       ÐодÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑабоÑе Ñ Ð½Ð°Ð±Ð¾Ñами
       Ñигналов еÑÑÑ Ð½Ð° ÑÑÑаниÑе sigsetops(3).

       СпиÑок ÑÑнкÑий безопаÑнÑÑ Ð°ÑинÑÑоннÑÑ
       Ñигналов, коÑоÑÑе можно не опаÑаÑÑÑ Ð²ÑзÑваÑÑ
       из обÑабоÑÑика Ñигналов, ÑмоÑÑиÑе в signal(7).

   ÐÑлиÑÐ¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой C и ÑдÑом
       ÐбÑÑÑоÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ glibc Ð´Ð»Ñ sigaction() вÑдаÑÑ Ð¾ÑибкÑ
       (EINVAL) пÑи попÑÑÐºÐ°Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¾Ð±ÑабоÑÑики двÑÑ
       Ñигналов ÑеалÑного вÑемени, коÑоÑÑе
       иÑполÑзÑÑÑÑÑ Ð²Ð½ÑÑÑи ÑеализаÑии NPTL. ÐодÑобноÑÑи
       ÑмоÑÑиÑе в nptl(7).

       ÐеÑвонаÑалÑно, ÑиÑÑемнÑй вÑзов Linux назÑвалÑÑ
       sigaction(). Ðднако, Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñигналов
       ÑеалÑного вÑемени в Linux 2.2, 32-биÑнÑй
       аÑгÑÐ¼ÐµÐ½Ñ sigset_t неизменÑемого ÑазмеÑа,
       поддеÑживаемÑй ÑÑим ÑиÑÑемнÑм вÑзовом, не
       мог болÑÑе иÑполÑзоваÑÑÑÑ. Ð ÑезÑлÑÑаÑе бÑл
       добавлен новÑй ÑиÑÑемнÑй вÑзов rt_sigaction() Ñ
       ÑвелиÑеннÑм Ñипом sigset_t. У нового
       ÑиÑÑемного вÑзова поÑвилÑÑ ÑеÑвÑÑÑÑй аÑгÑменÑ,
       size_t sigsetsize, в коÑоÑом ÑказÑваеÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ (в
       байÑаÑ) набоÑов Ñигналов act.sa_mask и
       oldact.sa_mask. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð·Ð½Ð°Ñение ÑÑого
       аÑгÑменÑа должно бÑÑÑ Ñавно sizeof(sigset_t)
       (инаÑе Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка EINVAL). ÐбÑÑÑоÑнаÑ
       ÑÑнкÑÐ¸Ñ glibc sigaction() ÑкÑÑÐ²Ð°ÐµÑ ÑÑо и вÑзÑваеÑ
       rt_sigaction(), еÑли он еÑÑÑ Ð² ÑдÑе.

   ÐедокÑменÑиÑованное
       Ðо поÑÐ²Ð»ÐµÐ½Ð¸Ñ SA_SIGINFO ÑÑÑеÑÑвовала возможноÑÑÑ
       полÑÑиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑиÑ, иÑполÑзÑÑ
       sa_handler Ñо вÑоÑÑм паÑамеÑÑом Ñипа struct sigcontext.
       См. ÑооÑвеÑÑÑвÑÑÑий иÑÑоднÑй код ÑдÑа Linux. Ð
       наÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑÐ¾Ñ Ð¼ÐµÑанизм ÑÑÑаÑел.

ÐÐФÐÐТЫ
       Ð ÑдÑÐ°Ñ Ð¿Ð¾ веÑÑÐ¸Ñ 2.6.13 вклÑÑиÑелÑно, Ñказание
       SA_NODEFER в sa_flags пÑедоÑвÑаÑÐ°ÐµÑ Ð´Ð¾ÑÑавкÑ
       Ñигнала  не ÑолÑко из маÑкиÑÑемого пÑи
       вÑполнении обÑабоÑÑика, но Ñакже
       Ñигналов, ÑказаннÑÑ Ð² sa_mask. ÐÑÐ¾Ñ Ð´ÐµÑекÑ
       иÑпÑавлен в ÑдÑе 2.6.14.

ÐÐ ÐÐÐÐ
       СмоÑÑиÑе в mprotect(2).

СÐÐТРÐТРТÐÐÐÐ
       kill(1), kill(2), killpg(2), pause(2), restart_syscall(2), seccomp(2)
       sigaltstack(2), signal(2), signalfd(2), sigpending(2), sigprocmask(2),
       sigreturn(2), sigsuspend(2), wait(2), raise(3), siginterrupt(3),
       sigqueue(3), sigsetops(3), sigvec(3), core(5), signal(7)



Linux                             2016-03-15                      SIGACTION(2)