sigset

Autres langues

Langue: ja

Autres versions - même langue

Version: 2005-12-01 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

sigset, sighold, sigrelse, sigignore - System V ÈÇ¥·¥°¥Ê¥ë API

½ñ¼°

#define _XOPEN_SOURCE 500
#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t sigset(int sig, sighandler_t disp);

int sighold(int sig);

int sigrelse(int sig);

int sigignore(int sig);

ÀâÌÀ

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢ÀΤʤ¬¤é¤Î System V ÈÇ¥·¥°¥Ê¥ë API ¤ò»ÈÍѤ·¤Æ¤¤¤ë¥×¥í¥°¥é¥à ¤ËÂФ·¤Æ¸ß´¹À­¤Î¤¢¤ë¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò glibc ¤ÇÄ󶡤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤Î API ¤Ï²áµî¤Î¤â¤Î¤Ç¤¢¤ê¡¢¿·¤·¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï POSIX ¥·¥°¥Ê¥ë API (sigaction(2), sigprocmask(2) ¤Ê¤É) ¤ò»ÈÍѤ¹¤Ù¤­¤Ç¤¢¤ë¡£

´Ø¿ô sigset() ¤Ï¥·¥°¥Ê¥ë sig ¤Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÆ°ºî¤òÊѹ¹¤¹¤ë¡£ disp °ú¤­¿ô¤Ë¤Ï¡¢¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é´Ø¿ô¤Î¥¢¥É¥ì¥¹¤«¡¢ °Ê²¼¤ÎÄê¿ô¤Î¤¤¤º¤ì¤«°ì¤Ä¤ò»ØÄê¤Ç¤­¤ë¡£

SIG_DFL
sig ¤ÎÆ°ºî¤ò¥Ç¥Õ¥©¥ë¥È¤Ë¥ê¥»¥Ã¥È¤¹¤ë¡£
SIG_IGN
sig ¤ò̵»ë¤¹¤ë¡£
SIG_HOLD
¤½¤Î¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤Ë sig ¤òÄɲ乤뤬¡¢ sig ¤ÎÆ°ºî¤ÏÊѹ¹¤·¤Ê¤¤¡£

disp ¤Ë¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Î¥¢¥É¥ì¥¹¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢ ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Î¼Â¹ÔÃæ¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤Ë sig ¤¬Äɲ䵤ì¤ë¡£

disp ¤Ë SIG_HOLD °Ê³°¤ÎÃͤ¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢ ¤½¤Î¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤«¤é sig ¤¬ºï½ü¤µ¤ì¤ë¡£

¥·¥°¥Ê¥ë SIGKILL ¤È SIGSTOP ¤ËÂФ¹¤ëÆ°ºî¤ÏÊѹ¹¤Ç¤­¤Ê¤¤¡£

´Ø¿ô sighold() ¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤Ë sig ¤òÄɲ乤롣

´Ø¿ô sigrelse() ¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤«¤é sig ¤òºï½ü¤¹¤ë¡£

´Ø¿ô sigignore() ¤Ï¡¢ sig ¤ÎÆ°ºî¤ò SIG_IGN ¤ËÀßÄꤹ¤ë¡£

ÊÖ¤êÃÍ

sigset() ¤ÏÀ®¸ù¤¹¤ë¤È¡¢ ¸Æ¤Ó½Ð¤·Á°¤Ë sig ¤¬¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï SIG_HOLD ¤òÊÖ¤·¡¢ ¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï Êѹ¹Á°¤Î¤½¤Î¥·¥°¥Ê¥ë¤ÎÆ°ºî¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤Î¾ì¹ç¡¢ sigset() ¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤Ë¥¨¥é¡¼¤ò¼¨¤¹Ãͤò¥»¥Ã¥È¤¹¤ë¡£

´Ø¿ô sighold(), sigrelse(), sigignore() ¤ÏÀ®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤¹¡£¥¨¥é¡¼¤Î¾ì¹ç¡¢-1 ¤òÊÖ¤·¡¢ errno ¤Ë¥¨¥é¡¼¤ò¼¨¤¹Ãͤò¥»¥Ã¥È¤¹¤ë¡£

¥¨¥é¡¼

sigset() ¤Ë´Ø¤·¤Æ¤Ï¡¢ sigaction(2) ¤È sigprocmask(2) ¤Î¡Ö¥¨¥é¡¼¡×¤ÎÀá¤ò»²¾È¡£

sighold() ¤È sigrelse() ¤Ë´Ø¤·¤Æ¤Ï¡¢ sigprocmask(2) ¤Î¡Ö¥¨¥é¡¼¡×¤ÎÀá¤ò»²¾È¡£

sigignore() ¤Ë´Ø¤·¤Æ¤Ï¡¢ sigaction(2) ¤Î¡Ö¥¨¥é¡¼¡×¤ÎÀá¤ò»²¾È¡£

½àµò

SVr4, POSIX.1-2001. ¤³¤ì¤é¤Î´Ø¿ô¤ÏÇÑ»ßͽÄê¤Ç¤¢¤ë¡£¿·¤·¤¤¥×¥í¥°¥é¥à¤Ç¤Ï»ÈÍѤ·¤Ê¤¤¤³¤È¡£

Ãí°Õ

¤³¤ì¤é¤Î´Ø¿ô¤Ï glibc 2.1 ¤ÇÅо줷¤¿¡£

sighandler_t ·¿¤Ï GNU ¤Ë¤è¤ë³ÈÄ¥¤Ç¤¢¤ê¡¢¤³¤Î man page ¤Ç sigset() ¤Î¥×¥í¥È¥¿¥¤¥×¤ò¤è¤êÆɤߤ䤹¤¯¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Æ¤¤¤ë¤À¤±¤Ç¤¢¤ë¡£

´Ø¿ô sigset() ¤Ï¿®ÍêÀ­¤Î¤¢¤ë¥·¥°¥Ê¥ë½èÍýµ¡¹½¤òÄ󶡤¹¤ë (sa_mask ¤ò 0 ¤Ç sigaction(2) ¤ò¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÈƱÍÍ)¡£

System V ¤Ç¤Ï¡¢´Ø¿ô signal() ¤¬Ä󶡤¹¤ë½èÍýµ¡¹½¤Ï¿®ÍêÀ­¤Î¤Ê¤¤¤â¤Î¤Ç¤¢¤ë (sa_mask ¤ò SA_RESETHAND | SA_NODEFER ¤È¤·¤Æ sigaction(2) ¤ò¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÈƱÍÍ)¡£ BSD ¤Ç¤Ï¡¢ signal() ¤Ï¿®ÍêÀ­¤Î¤¢¤ë½èÍýµ¡¹½¤òÄ󶡤¹¤ë¡£ POSIX.1-2001 ¤Ç¤Ï¡¢ signal() ¤Î¤³¤ÎÅÀ¤Ïµ¬Äꤷ¤Ê¤¤¤Þ¤Þ¤È¤Ê¤Ã¤Æ¤¤¤ë¡£ ¤µ¤é¤Ê¤ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï signal(2) ¤ò»²¾È¡£

BSD ¤È System V ¤Î¤É¤Á¤é¤Î¥·¥¹¥Æ¥à¤Ç¤â ¥·¥°¥Ê¥ë¤òÂԤĤ¿¤á¤Ë¡¢ sigpause() ¤È¤¤¤¦Ì¾Á°¤Î´Ø¿ô¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¤¬¡¢ ¤³¤Î´Ø¿ô¤Î°ú¤­¿ô¤ÏξÊý¤Î¥·¥¹¥Æ¥à¤Ç°Û¤Ê¤ë¡£ ¾ÜºÙ¤Ï sigpause(3) ¤ò»²¾È¡£

¥Ð¥°

2.2 ¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Î glibc ¤Ç¤Ï¡¢ disp ¤Ë SIG_HOLD °Ê³°¤ÎÃͤ¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢ sig ¤Î¥Ö¥í¥Ã¥¯²ò½ü¤ò¹Ô¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¡£

2.3.5 °ÊÁ°¤ÎÁ´¤Æ¤Î¥Ð¡¼¥¸¥ç¥ó¤Î glibc ¤Ç¤Ï¡¢ sigset() ¤¬Êѹ¹Á°¤Î¥·¥°¥Ê¥ë¤ÎÆ°ºî¤òÀµ¤·¤¯ÊÖ¤µ¤Ê¤¤¾ì¹ç¤¬ 2¤Ä¤¢¤ë¡£ °ì¤Ä¤á¤Ï¡¢ disp ¤Ë SIG_HOLD ¤¬»ØÄꤵ¤ì¤ë¤È¡¢À®¸ù¤·¤¿¾ì¹ç sigset() ¤Ï¾ï¤Ë SIG_HOLD ¤òÊÖ¤¹¤³¤È¤Ç¤¢¤ë¡£ Àµ¤·¤¯¤Ï¡¢(¥·¥°¥Ê¥ë¤¬¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï) Êѹ¹Á°¤Î¥·¥°¥Ê¥ë¤ÎÆ°ºî¤òÊÖ¤¹¤Ù¤­¤Ç¤¢¤ë (¥·¥°¥Ê¥ë¤¬¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï¡¢ SIG_HOLD ¤¬ÊÖ¤µ¤ì¤ë)¡£ ¤â¤¦°ì¤Ä¤Ï¡¢¥·¥°¥Ê¥ë¤¬¸½ºß¥Ö¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ À®¸ù¤·¤¿¾ì¹ç¤Î sigset() ¤ÎÊÖ¤êÃÍ¤Ï SIG_HOLD ¤Ë¤Ê¤ë¤Ù¤­¤Ç¤¢¤ë¤¬¡¢¼ÂºÝ¤Ë¤Ï Êѹ¹Á°¤Î¥·¥°¥Ê¥ë¤ÎÆ°ºî¤¬ÊÖ¤µ¤ì¤ë¤³¤È¤Ç¤¢¤ë¡£

´ØÏ¢¹àÌÜ

kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), raise(3), sigpause(3), sigvec(3), feature_test_macros(7), signal(7)