signal

Autres langues

Langue: ja

Version: 2000-04-28 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

̾Á°

signal - ANSI C ¥·¥°¥Ê¥ëÁàºî

½ñ¼°

#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t sighandler);

ÀâÌÀ

signal() ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Ï signum ¤Ç»ØÄꤵ¤ì¤¿ÈÖ¹æ¤Î¥·¥°¥Ê¥ë¤Ë ¿·¤·¤¤¥·¥°¥Ê¥ë¡¦¥Ï¥ó¥É¥é¡¼¤òÀßÄꤹ¤ë¡£ ¤³¤Î¥·¥°¥Ê¥ë¡¦¥Ï¥ó¥É¥é¡¼¤Ï handler ¤ËÀßÄꤵ¤ì¤ë¡£ handler ¤Ï¡¢¥æ¡¼¥¶¡¼¤Î»ØÄꤷ¤¿´Ø¿ô¡¢ SIG_IGN¡¢ SIG_DFL ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£

¥·¥°¥Ê¥ëÈÖ¹æ signum ¤Î¥·¥°¥Ê¥ë¤ò¼õ¤±¤ë¤È¼¡¤Î¤è¤¦¤ËÆ°ºî¤¹¤ë¡£ Âбþ¤¹¤ë¥Ï¥ó¥É¥é¡¼¤¬ SIG_IGN ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥·¥°¥Ê¥ë¤Ï̵»ë¤µ¤ì¤ë¡£ ¥Ï¥ó¥É¥é¡¼¤¬ SIG_DFL ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥·¥°¥Ê¥ë¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿ ¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ò¹Ô¤¦ (signal(7) ¤ò»²¾È)¡£ ¥Ï¥ó¥É¥é¡¼¤¬´Ø¿ô handler ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤Þ¤ººÇ½é¤Ë¥Ï¥ó¥É¥é¡¼¤¬ SIG_DFL ¤Ë¥ê¥»¥Ã¥È¤µ¤ì (¤¢¤ë¤¤¤Ï¼ÂÁõ¤Ë°Í¸¤¹¤ë¥·¥°¥Ê¥ë¤Î¥Ö¥í¥Ã¥¯¤¬¼Â¹Ô¤µ¤ì)¡¢ ¼¡¤Ë signum ¤ò°ú¤­¿ô¤È¤·¤Æ handler ¤¬¸Æ¤Ð¤ì¤ë¡£

¥·¥°¥Ê¥ë¤ËÂФ·¤Æ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¡¼´Ø¿ô¤ò»È¤¦¤³¤È¤Ï¡¢ ¡Ö¥·¥°¥Ê¥ë¤Î¥­¥ã¥Ã¥Á¡×¤È¸Æ¤Ð¤ì¤ë¡£ ¥·¥°¥Ê¥ë SIGKILL ¤È SIGSTOP ¤Ï¥­¥ã¥Ã¥Á¤Ç¤­¤º¡¢Ìµ»ë¤¹¤ë¤³¤È¤â¤Ç¤­¤Ê¤¤¡£

ÊÖ¤êÃÍ

signal() ´Ø¿ô¤Ïº£¤Þ¤Ç¤Î¥·¥°¥Ê¥ë¡¦¥Ï¥ó¥É¥é¡¼¤ÎÃͤòÊÖ¤¹¤«¡¢¥¨¥é¡¼¤Î¾ì¹ç¤Ï SIG_ERR ¤òÊÖ¤¹¡£

½àµò

C89, C99, POSIX.1-2001.

Ãí°Õ

¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¥×¥í¥»¥¹¤Ë¤ª¤±¤ë¤³¤Î´Ø¿ô¤Î·ë²Ì¤Ï¡¢»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£

POSIX ¤Ë¤è¤ë¤È¡¢ kill(2) ¤ä raise(3) ´Ø¿ô¤ÇÀ¸À®¤Ç¤­¤Ê¤¤ SIGFPE, SIGILL, SIGSEGV ¥·¥°¥Ê¥ë¤ò̵»ë¤·¤¿¸å¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¢¤ë¡£ 0 ¤Ë¤è¤ëÀ°¿ô³ä¤ê»»¤Î·ë²Ì¤Ï̤ÄêµÁ¤È¤Ê¤ë¡£ ¤¢¤ë¼ï¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¡¼¤Ç¤Ï¡¢¤³¤ì¤Ï SIGFPE ¥·¥°¥Ê¥ë¤òÀ¸À®¤¹¤ë¡£ (ƱÍͤËÉé¤ÎºÇÂçÀ°¿ô¤ò -1 ¤Ç³ä¤ë¤È SIGFPE ¤¬À¸À®¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£) ¤³¤Î¥·¥°¥Ê¥ë¤ò̵»ë¤¹¤ë¤È̵¸Â¥ë¡¼¥×¤Ë´Ù¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

SIGCHLD ¤ÎÆ°ºî¤È¤·¤Æ SIG_IGN ¤òÀßÄꤷ¤¿¾ì¹ç¤Î¾ÜºÙ¤ÊÆ°ºî¤Ë¤Ä¤¤¤Æ¤Ï¡¢ sigaction(2) ¤ò»²¾È¤¹¤ë¤³¤È¡£

¥·¥°¥Ê¥ë¥Ï¥ó¥É¥éÆ⤫¤é°ÂÁ´¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤ë¡¢ async-signal-safe functions (ÈóƱ´ü¥·¥ó¥°¥ë¤Ç°ÂÁ´¤Ê´Ø¿ô) ¤Î ¥ê¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï signal(7) ¤ò»²¾È¡£

sighandler_t ¤Î»ÈÍÑ¤Ï GNU ³ÈÄ¥¤Ç¤¢¤ë¡£ ³Æ¼ï¥Ð¡¼¥¸¥ç¥ó¤Î libc ¤Ç¤³¤Î·¿¤ÏÄêµÁºÑ¤ß¤Ç¤¢¤ë; libc4 ¤È libc5 ¤Ç¤Ï SignalHandler ¤òÄêµÁ¤·¤Æ¤¤¤ë¡£ glibc ¤Ç¤Ï sig_t ¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢ _GNU_SOURCE ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï sighandler_t ¤âÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£

°Ü¿¢À­

Unix ¤Î¥ª¥ê¥¸¥Ê¥ë¤Î signal() ¤Ï¥Ï¥ó¥É¥é¡¼¤ò SIG_DFL ¤Ë¥ê¥»¥Ã¥È¤¹¤ë¡£ System V (¤È Linux ¥«¡¼¥Í¥ë¤È libc4,5) ¤âƱ¤¸¤Ç¤¢¤ë¡£ °ìÊý¡¢BSD ¤Ç¤Ï¥Ï¥ó¥É¥é¡¼¤Î¥ê¥»¥Ã¥È¤ò¹Ô¤ï¤º¡¢ ¥Ï¥ó¥É¥é¡¼¤¬¸Æ¤Ð¤ì¤Æ¤¤¤ë´Ö¤Ë ¥·¥°¥Ê¥ë¤Î¿·¤·¤¤¥¤¥ó¥¹¥¿¥ó¥¹¤¬È¯À¸¤¹¤ë¤Î¤ò¥Ö¥í¥Ã¥¯¤¹¤ë¡£ glibc2 ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï BSD ¤ÎÆ°ºî¤Ë½¾¤Ã¤Æ¤¤¤ë¡£

libc5 ¥·¥¹¥Æ¥à¤Ë¤ª¤¤¤Æ <signal.h> ¤Î¤«¤ï¤ê¤Ë <bsd/signal.h> ¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤È¡¢ signal() ¤Ï __bsd_signal ¤ËºÆÄêµÁ¤µ¤ì¤Æ BSD Êý¼°¤È¤Ê¤ë¡£ ¤³¤ì¤Ï¿ä¾©¤µ¤ì¤Ê¤¤¡£

glibc2 ¥·¥¹¥Æ¥à¤Ë¤ª¤¤¤Æ _XOPEN_SOURCE ¤Î¤è¤¦¤Êµ¡Ç½¸¡ºº¥Þ¥¯¥í¤òÄêµÁ¤·¤¿¤ê¡¢¤³¤Î´Ø¿ô¤È¤ÏÊ̤Πsysv_signal ´Ø¿ô¤ò»È¤Ã¤¿¤ê¤¹¤ì¤Ð¡¢°ÊÁ°¤Î¤è¤¦¤ÊÆ°ºî¤ò¤¹¤ë¡£ ¤³¤ì¤Ï¿ä¾©¤µ¤ì¤Ê¤¤¡£

¥Þ¥¯¥í¤ÎÄêµÁ¤ä¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥¯¥ë¡¼¥É¤Ç ¤³¤Î´Ø¿ô¤ÎÊý¼°¤òÊѹ¹¤·¤è¤¦¤È¤¹¤ë¤Î¤Ï¡¢Îɤ¯¤Ê¤¤¹Í¤¨Êý¤Ç¤¢¤ë¡£ signal() ¤ò»È¤¦¤Î¤ò´°Á´¤ËÈò¤±¤Æ¡¢Âå¤ï¤ê¤Ë sigaction(2) ¤ò»È¤Ã¤¿Êý¤¬Îɤ¤¡£

´ØÏ¢¹àÌÜ

kill(1), alarm(2), kill(2), pause(2), sigaction(2), sigpending(2), sigprocmask(2), sigqueue(2), sigsuspend(2), bsd_signal(3), killpg(3), raise(3), sigsetops(3), sigvec(3), sysv_signal(3), feature_test_macros(7), signal(7)