sigaction

ëªì¹
     sigaction — ìíí¸ì¨ì´ ìê·¸ë 기ë¥

íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬
     Standard C Library (libc, -lc)

ìì
     <signal.h>

     struct sigaction {
             /*
              * SA_SIGINFO íëê·¸ê° ì¬ì©ëì´ ìì§ ìì ê²½ì°ì
              * SIG_DFL ë° SIG_IGN ì©ì ìê·¸ë í¸ë¤ë¬ í¨ì
              */
             void     (*sa_handler)(int);

             /* SA_SIGINFO íë그를 ì¬ì©íë ê²½ì°ì ìê·¸ë í¸ë¤ë¬ í¨ì */
             void     (*sa_sigaction)(int, siginfo_t *, void *);

             sigset_t sa_mask;            /* ì ì©íë ìê·¸ë ë§ì¤í¬ */
             int      sa_flags;           /* íì ì ìê·¸ë ìµì 참조 */
     };
     int sigaction(int sig, const struct sigaction *act, struct sigaction
     *oact)

í´ì¤
     ìì¤íììë ìê·¸ëì ì§í©ì ì ìíê³  ìì´, ì´ê²ë¤ì íë¡ì¸ì¤ì ì ë¬ëë ì¼ì´ ììµëë¤.
     ìê·¸ëì ì ë¬ì, íëì¨ì´ ìì¹ê¸°ì ë°ìì ë®ì ììµëë¤. íµìì ê²½ì°, ìê·¸ëì ìë¡ì´
     ë°ìì ë¸ë¡ ëì´ íì¬ì íë¡ì¸ì¤ 문맥ì ë³´ì¡´ëì´, ìë¡ì´ íë¡ì¸ì¤ 문맥ì´
     ìì±ë©ëë¤. íë¡ì¸ì¤ë, ìê·¸ëì ì ë¬ì² handler (ì)를 ì§ì íë ì¼ë ìì¼ë©´,
     ìê·¸ëì 무ì íë ê²ì ì§ì íë ì¼ë ììµëë¤.  ìê·¸ëì´ ë°ìíì ê²½ì°ì, ìì¤íì´
     ëí´í¸ì ì¡ìì ì¡ëë¤ ì¼ì ì§ì íë ì¼ë ê°ë¥í©ëë¤.  ìê·¸ëì´ ë¸ë¡ ëë ì¼ë ìì´, ê·¸
     ê²½ì°, ìê·¸ëì ì ë¬ì, ë¸ë¡ì´ í´ì  ë  ëê¹ì§ ì°ê¸°ë©ëë¤.  ì ë¬ìì ì·¨íë ì¡ìì,
     ì ë¬ìì ì í´ì§ëë¤. íµìì ê²½ì°ë, ìê·¸ë í¸ë¤ë¬ê°, íë¡ì¸ì¤ì íí ì¤íì¼ë¡
     ëìí©ëë¤.  ì´ê²ì í¸ë¤ë¬ ë§ë¤ ë³ê²½ ê°ë¥íê³ , ë³ê²½íë©´, ìê·¸ëì í¹ìí ìê·¸ë
     ì¤í ê·¸ë¦¬ê³  ì¤í ê°ë¥í©ëë¤.

     íµìì ê²½ì°, ìê·¸ë routineë, í¸ì¶ì ìì¸ì´ ë ìê·¸ëì´ ë¸ë¡ ë ìíë¡ ëìí©ëë¤ë§,
     ê·¸ ì¸ì ìê·¸ëì´ ë°ìí  ê°ë¥ì±ì ììµëë¤. ê¸ë¡ë²ì ìê·¸ë ë§ì¤í¬ ìë, íë¡ì¸ì¤ìì
     ì ë¬ì´ íì¬ ë¸ë¡ ëê³  ìë ìê·¸ëì ì§í©ì´ ì ìëê³  ììµëë¤. íë¡ì¸ì¤ì ìê·¸ë
     ë§ì¤í¬ë, ë¶ëª¨ì ìê·¸ë ë§ì¤í¬ë¡ ì´ê¸°íë©ëë¤ (íµìì íë).  sigprocmask(2)
     íì§ë§ ë¶ë ¤ ê°ì ê²½ì°, ëë ìê·¸ëì´ íë¡ì¸ì¤ì ì ë¬ëìì ê²½ì°ì, ìê·¸ë ë§ì¤í¬ë
     ë³ê²½ë©ëë¤.

     ì´ë ìê·¸ëì ë°ì ì¡°ê±´ì´ íë¡ì¸ì¤ë¡ ë°ìíë©´(ì), ê·¸ ìê·¸ëì´, íë¡ì¸ì¤ë¡
     ë³´ë¥ì¤ì ìê·¸ëì ì§í©ì ì¶ê°ë©ëë¤.  ê·¸ ìê·¸ëì´ íë¡ì¸ì¤ë¡ íì¬ ë¸ë¡ ëì´ ìì§
     ìì ê²½ì°ë, íë¡ì¸ì¤ì ì ë¬ë©ëë¤.  ìê·¸ëì, íë¡ì¸ì¤ê°  operating systemì
     ë¤ì´ê° ìë ëìì (ìì¤í í¸ì¶í´, íì´ì§ ìë¬ë í¸ë©, í´ë½ ìì¹ê¸°ì¤ ë±ì)
     ì ë¬ë©ëë¤.  ë³µìì ìê·¸ëì ì ë¬ ì¤ë¹ê° ëìì ê°ì¶ì´ì¡ì ê²½ì°ë, í¸ë©ì¼ë¡ ì긴
     ìê·¸ëì´ ë¨¼ì  ì ë¬ë©ëë¤.  ê·¸ ì¸ì ìê·¸ëì, ê°ê°ì´ ì ì ìê·¸ëì í¸ë¤ë¬ì ëí´,
     ìµì´ì ì¸ì¤í¸ëìì ì ì ë¼ì´ë  ìíë¡ ëìì ì²ë¦¬ë©ëë¤.  ë³´ë¥ê° ëì´ ìë ìê·¸ëì
     ì§í©ì, sigpending(2) í¨ìë¡ ëë ¤ì£¼ì´ì§ëë¤.  í¬ì°©ë ìê·¸ëì´ ì ë¬ëë©´(ì),
     íë¡ì¸ì¤ì íì¬ì ìíê° ë³´ì¡´ëì´ ìë¡ì´ ìê·¸ë ë§ì¤í¬ê° ì´íë¡ ì¤ëªíëë¡(ë¯ì´)
     ì°ì¶ëì´, ìê·¸ë í¸ë¤ë¬ê° ë¶ë ¤ ê°ëë¤.  í¸ë¤ë¬ì í¸ì¶ì, ìê·¸ë ì²ë¦¬
     routineê° ì ìì ì¼ë¡ ëììì ê²½ì°ì, íë¡ì¸ì¤ê° ìê·¸ë ì ë¬ì ì 문맥ì¼ë¡ ì¤íì
     ì¬ê°íëë¡(ë¯ì´) ì¤ì ë©ëë¤.  íë¡ì¸ì¤ê° ë¤ë¥¸ 문맥ììì ì¬ê°ë¥¼ ë°ë¼ë
     ê²½ì°ë, ì ì 문맥 ê·¸ ì체를 ì기 ìì ì¼ë¡ íë³µíëë¡(ë¯ì´) ì¤ì í  íìê°
     ììµëë¤.

     ìê·¸ëì´ íë¡ì¸ì¤ì ì ë¬ëë©´(ì), íë¡ì¸ì¤ì ìê·¸ë í¸ë¤ë¬ì ì¤íì´ ê³ìëë ëì (ëë
     sigprocmask() íì§ë§ ë¶ë ¤ ê° ëê¹ì§), ìë¡ì´ ìê·¸ë ë§ì¤í¬ê° ì¤ì¹ë©ëë¤.  ì´
     ë§ì¤í¬ë, íì¬ì ìê·¸ë ë§ì¤í¬ ì§í©, ì ë¬ëë ìê·¸ë, ë¶ë ¤ ê°ë í¸ë¤ë¬ì ê´ë ¨í
     ìê·¸ë ë§ì¤í¬ì íì§í©ì ì·¨í´ íì±ë©ëë¤.

     sigaction() (ì)ë, sig ê·¸ë¦¬ê³  ì§ì í ìê·¸ëì ì¡ìì í ë¹í©ëë¤.  act íì§ë§ 0
     ì´ ìë ê²½ì°ë, ì¡ì (SIG_DFL, SIG_IGN ì¸ê° í¸ë¤ë¬ routine), ë° ì§ì ë ìê·¸ëì
     ì ë¬ìì ì¬ì©íë ë§ì¤í¬ê° ì§ì ë©ëë¤.  oact íì§ë§ 0 ì´ ìë ê²½ì°ë, ê·¸ ìê·¸ëì
     ì§ê¸ê¹ì§ì ì²ë¦¬ ì ë³´ê° ì ì ìê² ëë ¤ì£¼ì´ì§ëë¤.

     ìê·¸ë í¸ë¤ë¬ê° ì¤ì¹ëë©´(ì), íµìì ê²½ì°ë sigaction() (ì)를 ì¬ì°¨ í¸ì¶í ê¹
     execve(2) (ì)를 ì¤íí  ëê¹ì§, ê·¸ ìê·¸ë í¸ë¤ë¬ë ì¤ì¹ëëë¡ ìëë¤.
     sa_handler (ì)를 SIG_DFL (ì¼)ë¡ ì¤ì íë ê²ì¼ë¡, ìê·¸ë ë§ë¤ ê³ ì í ëí´í¸
     ì¡ìì 리ìí¸ í  ìê° ììµëë¤.  ëí´í¸ë, íë¡ì¸ì¤ì ì¢ë£ (ì½ì´ë¤íê° ëì¹ë ì¼ë
     ììµëë¤), ì¡ì ì´ë£¨ì´, íë¡ì¸ì¤ì ì ì§, íë¡ì¸ì¤ì ê³ììëë¤.  ê°ê°ì ìê·¸ëì
     ëí´í¸ ì¡ìì ëí´ìë, ìëì ê°ì ìê·¸ë 리ì¤í¸ë¥¼ ì°¸ì¡°í´ ì£¼ì¸ì.  sa_handler
     íì§ë§ SIG_DFL ì¸ ê²½ì°, ìê·¸ëì ëí´í¸ ì¡ìì ìê·¸ëì íê¸°ê° ë©ëë¤.  ë,
     ìê·¸ëì´ ë³´ë¥ê° ëì´ ìë ê²½ì°ììë, ìê·¸ëì´ ë§ì¤í¬ ëê³  ìì´ë ë³´ë¥ì¤ì ìê·¸ëì
     í기ë©ëë¤.  sa_handler (ì)를 SIG_IGN (ì¼)ë¡ ì¤ì íë©´(ì), íì¬ì ìê·¸ë
     ì¤ì²´ì ë³´ë¥ì¤ì ìê·¸ë ì¤ì²´ë 무ìëì´ í기ë©ëë¤.

     ìµìì, sa_flags (ì)를 ì¤ì íë ê²ì¼ë¡ ì§ì í  ì ììµëë¤. ê°ê°ì ë¹í¸ì ì미ë
     ì´íëë¡ìëë¤.

           SA_NOCLDSTOP    SIGCHLD ìê·¸ëì ìì  í¨ì를 ì¤ì¹íë ê²½ì°ì ì´ ë¹í¸ë¥¼
                           ì¤ì íë©´(ì), child processê° ì ì§íì ëê° ìëê³ ,
                           child processê° ì¢ë£í  ê²½ì°ì ë§ì, SIGCHLD ìê·¸ëì´
                           ìì±ë©ëë¤.

           SA_NOCLDWAIT    SIGCHLD ìê·¸ëë¡ sigaction() (ì)를 í¸ì¶íë ê²½ì°ì ì´
                           ë¹í¸ë¥¼ ì¤ì íë©´(ì), ìì¤íì, í¸ì¶ì¸¡ íë¡ì¸ì¤ì child
                           processê° ì¢ë£íì ëì ì¢ë¹ íë¡ì¸ì¤ë¥¼ ìì±íì§ ìê²
                           ë©ëë¤.  ê·¸ í, í¸ì¶ì¸¡ íë¡ì¸ì¤ê° wait(2) ì¸ê°
                           거기ì ìë¹íë í¨ì를 ì¤ííë©´(ì), í¸ì¶ì¸¡ íë¡ì¸ì¤ì
                           모ë ì child processê° ì¢ë£í  ëê¹ì§ ë¸ë¡ í´, ë¤ìì
                           errno (ì)를 ECHILD (ì¼)ë¡ ì¤ì í´ -1 를 ëë ¤ì¤ëë¤.

           SA_ONSTACK      ì´ ë¹í¸ë¥¼ ì¤ì íë©´(ì), ìì¤íì, sigaltstack(2)
                           ê·¸ë¦¬ê³  ì§ì ëìë¤ ìê·¸ë ì¤í ì ììì, íë¡ì¸ì¤ì ìê·¸ëì
                           ì ë¬í©ëë¤.

           SA_NODEFER      ì´ ë¹í¸ë¥¼ ì¤ì íë©´(ì), ì ë¬ì´ ëë ìê·¸ëì ìë¡ì´
                           ë°ìì´, í¸ë¤ë¬ì ì¤íì¤ì ë§ì¤í¬ ëì§ ìê² ë©ëë¤.

           SA_RESETHAND    ì´ ë¹í¸ë¥¼ ì¤ì íë©´(ì), ìê·¸ëì´ ì ë¬ë ìê°ì,
                           í¸ë¤ë¬ê° SIG_DFL ì 리ìí¸ ë©ëë¤.

           SA_SIGINFO      ì´ ë¹í¸ê° ì¤ì ëì´ ìë ê²½ì°, í¸ë¤ë¬ í¨ìë, sigaction
                           구조체ì sa_sigaction 멤ë²ê° ê°ë¦¬í¤ë ê²ê³¼
                           ë´ëë¤. í¸ë¤ë¬ í¨ìë, ë¨¼ì  ê°ë¦¬í¨ prototype í¹ì
                           ë¤ìì ê°ë¦¬í¨ë¤ ì¬ì©ì ì ì¼ì¹íì§ ìì¼ë©´ ìë©ëë¤.  ì´
                           ë¹í¸ë, SIG_DFL í¹ì SIG_IGN (ì)를 í ë¹í  ëìë ì¤ì
                           í´ìë ìë©ëë¤.

     ë¤ìì ëë ìì¤í ì½ì ì¤íì¤ì ìê·¸ëì´ í¬ì°©ëë©´(ì), ê·¸ ìì¤í ì½ì í¸ì¶ì, ìë¬
     EINTR ê·¸ë¦¬ê³  ê°ì  ì¢ë£ëëì§, ìêµ¬ë³´ë¤ ì§§ì ë°ì´í° ì ì¡ì¼ë¡ ëìì¤ëì§, ëë
     ì¬ê°ë©ëë¤.  ë³´ë¥ì¤ì ìì¤í ì½ì ì¬ê°ë, sa_flags ê·¸ë¦¬ê³  SA_RESTART
     ë¹í¸ë¥¼ ì¤ì íë ê²ì¼ë¡ ìêµ¬í  ì ììµëë¤.  ìí¥ì ë°ë ìì¤í ì½ì, íµì  ì±ëì¸ê°
     ë¦ì ëë°ì´ì¤ (ë¨ë§ ë±, íµì íì¼ì ìë 걸)ì ëíë¤ open(2), read(2), write(2),
     sendto(2), recvfrom(2), sendmsg(2), recvmsg(2) (ì)ê³¼ wait(2), ioctl(2)
     ìëë¤.  ê·¸ë¬ë, ë²ì¨ ì¤íëê³  ìë ìì¤í ì½ì ì¬ê°ëì§ ìê³ , ë¶ë¶ì ì¸ ì²ë¦¬
     ì±ê³µì ê²°ê³¼ (짧ì ì½ê¸° ì¹´ì´í¸ë±)를 ëë ¤ì¤ëë¤.

     fork(2) ì¸ê° vfork(2) ì ë¤ììë, ëª¨ë  ìê·¸ë, ìê·¸ë ë§ì¤í¬, ìê·¸ë ì¤í, ì¬ê°
     íëê·¸, ìì¹ê¸° íëê·¸ê° child processì ê³ì¹ë©ëë¤.

     execve(2) (ì)ë, í¬ì°©ëê³  ìë ëª¨ë  ìê·¸ëì ëí´í¸ ì¡ìì ë°íì¼ë¡ ëëë ¤, 모ë
     ìê·¸ëì ì ì ì¤íì¼ë¡ ìì ëëë¡(ë¯ì´) 리ìí¸ í©ëë¤.  무ìë ìê·¸ëì 무ìëëë¡
     ìëë¤.  ìê·¸ë ë§ì¤í¬ë ê°ì ìíì¸ ì±ìëë¤.  ë³´ë¥ì¤ì ìì¤í ì½ì ì¬ê°íë ì¤ì ì
     ìê·¸ëì, ê·¸ ì¬ê°ì ì¤ì ì¸ ì±ìëë¤.

     ì´íë ëª¨ë  ìê·¸ëì 리ì¤í¸ìëë¤. ëªì¹ì, ì¸í´ë£¨ë íì¼ ⟨signal.h⟩ ì ìë ê²
     ê²ê³¼ ê°ìµëë¤.

     ëªì¹ ëí´í¸ ì¡ì ì¤ëª
     SIGHUP          íë¡ì¸ì¤ì ì¢ë£           ë¨ë§ ë¼ì¸ì íì
     SIGINT          íë¡ì¸ì¤ì ì¢ë£           íë¡ê·¸ë¨ì ìì¹ê¸°
     SIGQUIT         core imageì ìì±         íë¡ê·¸ë¨ì ì¤ë¨ ì¢ë£
     SIGILL          core imageì ìì±         ë¶ì í ì¸ì¤í¸ëì
     SIGTRAP         core imageì ìì±         í¸ë©ì í¸ë ì´ì¤
     SIGABRT         core imageì ìì±         abort(3) ì í¸ì¶ (ì´ì ì SIGIOT)
     SIGEMT          core imageì ìì±         ì¸ì¤í¸ëì ì¤íì ì뮤ë ì´í¸
     SIGFPE          core imageì ìì±         ë¶ë ìì ìì¸
     SIGKILL         íë¡ì¸ì¤ì ì¢ë£           íë¡ê·¸ë¨ì ê°ì  ì¢ë£
     SIGBUS          core imageì ìì±         ë²ì¤ ìë¬
     SIGSEGV         core imageì ìì±         ë¶í  ìë°
     SIGSYS          core imageì ìì±         ì¡´ì¬íì§ ìë ìì¤í ì½ì í¸ì¶
     SIGPIPE         íë¡ì¸ì¤ì ì¢ë£           ì½ê¸°ì¸¡ì´ ìë íì´íìì 기ë¡
     SIGALRM         íë¡ì¸ì¤ì ì¢ë£           리ì¼íì íì´ë¨¸ì ë§ë£
     SIGTERM         íë¡ì¸ì¤ì ì¢ë£           ìíí¸ì¨ì´ ì¢ë£ ìê·¸ë
     SIGURG          ìê·¸ëì í기             ê¸´ê¸ ìí©ì´ ìì¼ì ë°ì
     SIGSTOP         íë¡ì¸ì¤ì ì ì§           ì ì§ (í¬ì°©ë 무ìë í  ì ììµëë¤)
     SIGTSTP         íë¡ì¸ì¤ì ì ì§           í¤ë³´ëë¡ë¶í° ìì±ë ì ì§ ìê·¸ë
     SIGCONT         ìê·¸ëì í기             ì ì§ íì ê³ì
     SIGCHLD         ìê·¸ëì í기             child process ìí ë³í
     SIGTTIN         íë¡ì¸ì¤ì ì ì§           백그ë¼ì´ë íë¡ì¸ì¤ê° ì ì´
                                             ë¨ë§ë¡ë¶í° ì½ê¸° íë ¤ê³  íë¤
     SIGTTOU         íë¡ì¸ì¤ì ì ì§           백그ë¼ì´ë íë¡ì¸ì¤ê° ì ì´ ë¨ë§ì
                                             ê¸°ë¡ íë ¤ê³  íë¤
     SIGIO           ìê·¸ëì í기             기ì ììê²ë¡ì  I/O ê°ë¥ ( fcntl(2)
                                             참조)
     SIGXCPU         íë¡ì¸ì¤ì ì¢ë£           cpu ì í ìê°ì ì´ê³¼ ( setrlimit(2)
                                             참조)
     SIGXFSZ         íë¡ì¸ì¤ì ì¢ë£           íì¼ ì¬ì´ì¦ ì íì ì´ê³¼ (
                                             setrlimit(2) 참조)
     SIGVTALRM       íë¡ì¸ì¤ì ì¢ë£           ê°ì ìê° ìë ( setitimer(2) 참조)
     SIGPROF         íë¡ì¸ì¤ì ì¢ë£           íë¡ íì¼ë§ íì´ë¨¸ ìë (
                                             setitimer(2) 참조)
     SIGWINCH        ìê·¸ëì í기             ìëì° ì¬ì´ì¦ì ë³í
     SIGINFO         ìê·¸ëì í기             í¤ë³´ëë¡ë¶í°ì ì¤íì´í°ì¤ ì구
     SIGUSR1         íë¡ì¸ì¤ì ì¢ë£           ì ì  ì ì ìê·¸ë 1
     SIGUSR2         íë¡ì¸ì¤ì ì¢ë£           ì ì  ì ì ìê·¸ë 2

주
     act (ì¼)ë¡ ì§ì íë¤ sa_mask íëììë, SIGKILL (ì´)ë SIGSTOP (ì)를 ë¸ë¡ í  ì
     ììµëë¤. ë¸ë¡ íë ¤ê³  í´ë 무ìë©ëë¤.

     ì´íì í¨ìë, ì¬ìì ì¸ê° ìê·¸ëë¡ ë¼ì´ë¤ì´ì§ë ê²ì´ ìëê°ì ì´ë 쪽 ì¸ê°ë¡,
     ë¹ë기 ìê·¸ëììë ìì í©ëë¤. ì´ ë문ì, ì´í리ì¼ì´ìì, ìê·¸ë ìì  í¨ìë¡ë¶í°
     ì íìì´ í¸ì¶í  ì ììµëë¤.

     ë² ì´ì¤ ì¸í°íì´ì¤

     _exit(), access(), alarm(), cfgetispeed(), cfgetospeed(), cfsetispeed(),
     cfsetospeed(), chdir(), chmod(), chown(), close(), creat(), dup(),
     dup2(), execle(), execve(), fcntl(), fork(), fpathconf(), fstat(),
     fsync(), getegid(), geteuid(), getgid(), getgroups(), getpgrp(),
     getpid(), getppid(), getuid(), kill(), link(), lseek(), mkdir(),
     mkfifo(), open(), pathconf(), pause(), pipe(), raise(), read(), rename(),
     rmdir(), setgid(), setpgid(), setsid(), setuid(), sigaction(),
     sigaddset(), sigdelset(), sigemptyset(), sigfillset(), sigismember(),
     signal(), sigpending(), sigprocmask(), sigsuspend(), sleep(), stat(),
     sysconf(), tcdrain(), tcflow(), tcflush(), tcgetattr(), tcgetpgrp(),
     tcsendbreak(), tcsetattr(), tcsetpgrp(), time(), times(), umask(),
     uname(), unlink(), utime(), wait(), waitpid(), write()

     리ì¼íì ì¸í°íì´ì¤

     aio_error(), clock_gettime(), sigpause(), timer_getoverrun(),
     aio_return(), fdatasync(), sigqueue(), timer_gettime(), aio_suspend(),
     sem_post(), sigset(), timer_settime()

     ìì 리ì¤í¸ì 기ì¬ëì§ ìì ëª¨ë  í¨ìë, ìê·¸ëì ê´í´ì ìì íì§ ìë¤ (ì´)ë¼ê³
     ìê°ë©ëë¤.  ì¦, ê·¸ë¬í í¨ìê° ìê·¸ë í¸ë¤ë¬ë¡ë¶í° ë¶ë ¤ ê° ëì ëìì,
     미ì ë리ìëë¤.

ë°íê°
     The sigaction() function returns the value 0 if successful; otherwise the
     value -1 is returned and the global variable errno is set to indicate the
     error.

ì¬ì©ì
     í¸ë¤ë¬ê° ì¼ì¹í  ê°ë¥ì±ì´ ìë prototypeë 3 ê° ììµëë¤.

           ANSI C:
                  void handler(int);

           ì íµì ì¸ BSD ì¤íì¼:
                  void handler(int, int code, struct sigcontext *scp);

           POSIX ì SA_SIGINFO:
                  void handler(int, siginfo_t *info, ucontext_t *uap);

     íëê·¸ì¤ìì SA_SIGINFO ë¹í¸ê° ì¤ì ëì´ ìë ê²½ì°, í¸ë¤ë¬ í¨ìë SA_SIGINFO
     prototypeì ì¼ì¹íì§ ìì¼ë©´ ìë©ëë¤.  ê·¸ ê²½ì°, sigaction 구조체ì
     sa_sigaction 멤ë²ê° í¸ë¤ë¬ í¨ì를 ê°ë¦¬í¤ì§ ìì¼ë©´ ìë©ëë¤.  ì´ ë°©ë²ì¼ë¡
     SIG_DFL í¹ì SIG_IGN 를 í ë¹í´ì  ì ëë ê²ì 주ìí´ ì£¼ì¸ì.

     SA_SIGINFO íëê·¸ê° ì¤ì ëì´ ìì§ ìì ê²½ì°, í¸ë¤ë¬ í¨ìë ANSI C í¹ì ì íµì ì¸
     BSD prototypeì ì´ëê°ì ì¼ì¹íì§ ìì¼ë©´ ìëì´, sigaction 구조체ì
     sa_handler 멤ë²ê° í¸ë¤ë¬ í¨ì를 ë³ë¡ ìì§ ìì¼ë©´ ìë©ëë¤.  ì¤ì ë¡ë,
     FreeBSD (ì)ë íì íìì´ë¤ BSD prototypeì 3 ê°ì ì¸ì를 ë³´ë´ê³ , ANSI C
     prototypeë ê·¸ ë¶ë¶ì§í©ì´ ëì´ ì기 ë문ì, ì´ëë¼ë ëìí©ëë¤.  FreeBSD
     ì¸í´ë£¨ë íì¼ì sa_handler ë©¤ë² ì ì¸ì, (POSIX ì ì구ì ë°ë¼) ANSI C ì
     ê²ìëë¤.  ê·¸ ë문ì, BSD ì¤íì¼ì í¨ìì í¬ì¸í°ì ê²½ì°, ê²½ê³  ë©ì¸ì§ë¥¼ ìê²
     í´ ì»´íì¼ íë ¤ë©´ ìºì¤í¸ í  íìê° ììµëë¤.  ì íµì ì¸ BSD ì¤íì¼ì ì´ìì±ì´
     ìê³ , ê·¸ 기ë¥ì±ë SA_SIGINFO í¸ë¤ë¬ì ìì í ë¶ë¶ ì§í©ì´ ëì´ ì기 ë문ì,
     BSD ì¤íì¼ì ì¬ì©íë ê²ì ì¶ì² ëê³  ìì§ ììµëë¤.

     sig ì¸ìë ìê·¸ë ë²í¸ë¡,<signal.h> ì SIG... ê° ì¤ 1 ê°ìëë¤.  BSD ì¤íì¼ì
     í¸ë¤ë¬ì code ì¸ì ë° SA_SIGINFO í¸ë¤ë¬ìì info ì¸ìì si_code 멤ë²ìë, ìê·¸ëì
     ë°ì ì´ì 를 ì¤ëªí ìì¹ ì½ëê° í¬í¨ëì´ ììµëë¤. íµì, ì´ ìì¹ ì½ëë
     <sys/signal.h> ì ìë¤ SI_... ê°ì 1 ê°ì¸ì§, í¹ì ìê·¸ëì í¹íí ì½ë, ì¦ SIGFPE
     ì ëíë¤ FPE_... ê°ìëë¤.  BSD ì¤íì¼ì í¸ë¤ë¬ì scp ì¸ìë sigcontext 구조체ì
     ì¸ì¤í´ì¤ë¥¼ ê°ë¦¬í¤ê³  ììµëë¤.

     POSIX SA_SIGINFO í¸ë¤ë¬ì uap ì¸ìë, ucontext_t ì ì¸ì¤í´ì¤ë¥¼ ê°ë¦¬í¤ê³
     ììµëë¤.

ìë¬
     ì´íì¤ 1 ê°(ì´)ì´ ë°ìíë©´(ì), sigaction() (ì)ë ìë¬ê° ëì´, ìë¡ì´ ìê·¸ë
     í¸ë¤ë¬ë ì¤ì¹ëì§ ììµëë¤.

     [EFAULT]           act ì¸ê° oact (ì)ë, íë¡ì¸ì¤ì í ë¹í  ì ììë address
                        ê³µê°ì ë²ìì¸ë¥¼ ê°ë¦¬í¤ê³  ììµëë¤.

     [EINVAL]           sig íì§ë§, ì¬ë°ë¥¸ ìê·¸ë ë²í¸ê° ëì´ ìì§ ììµëë¤.

     [EINVAL]           SIGKILL ì¸ê° SIGSTOP ì í¸ë¤ë¬ë¥¼ 무ìí ê¹ ì ê³µíë ¤ê³
                        íìµëë¤.

íì¤
     sigaction() í¨ì í¸ì¶ì, ISO/IEC 9945-1:1990 (“POSIX.1”) ì ì¤ê±°íê³
     ììµëë¤.  SA_ONSTACK íëê·¸ì SA_RESTART íëê·¸ë, Berkeley ì íì¥ ê¸°ë¥ìëë¤.
     SIGTRAP, SIGEMT, SIGBUS, SIGSYS, SIGURG, SIGIO, SIGXCPU, SIGXFSZ,
     SIGVTALRM, SIGPROF, SIGWINCH, SIGINFO ìê·¸ëë ê°ìµëë¤. ì´ë¬í ìê·¸ëì, BSD
     (ì¼)ë¡ë¶í° íìí ìì¤íì ëë¶ë¶ì¼ë¡ ì¬ì©í  ì ììµëë¤.  SA_NODEFER íëê·¸ì
     SA_RESETHAND íëê·¸ë, ê·¸ ì¸ì  operating systemìì íì í¸íì±ì ì ì§í기 ìí
     ê²ìëë¤.  SA_NOCLDSTOP íëê·¸ì SA_NOCLDWAIT íëê·¸ë, ê·¸ ì¸ì  operating
     systemë¡ ì¼ë°ì ì¼ë¡ ë³¼ ì ìë ìµììëë¤.

ê´ë ¨ í목
     kill(1), kill(2), ptrace(2), sigaltstack(2), sigblock(2), sigpause(2),
     sigpending(2), sigprocmask(2), sigsetmask(2), sigsuspend(2), sigvec(2),
     wait(2), fpsetmask(3), setjmp(3), siginterrupt(3), sigsetops(3),
     ucontext(3), tty(4)