Rechercher une page de manuel

Chercher une autre page de manuel:

sigvec

Autres langues

Langue: ja

Version: 2005-12-01 (ubuntu - 01/11/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

̾Á°

sigvec, sigblock, sigsetmask, siggetmask, sigmask - BSD ÈÇ¥·¥°¥Ê¥ë API

½ñ¼°

#define _BSD_SOURCE
#include <signal.h>

int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec);

int sigmask(int signum);

int sigblock(int mask);

int sigsetmask(int mask);

int siggetmask(void);

ÀâÌÀ

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

´Ø¿ô sigvec() ¤Ï¡¢(POSIX ¤Î sigaction(2) ¤ÈƱÍͤË) ¥·¥°¥Ê¥ë sig ¤Îưºî¤ÎÀßÄꡦ¼èÆÀ¤ò¹Ô¤¦¡£ vec ¤Ï¡¢NULL °Ê³°¤Î¾ì¹ç¡¢ sig ¤Î¿·¤·¤¤Æ°ºî¤òÄêµÁ¤·¤¿ sigvec ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£ ovec ¤Ï¡¢NULL °Ê³°¤Î¾ì¹ç¡¢ sig ¤ÎÊѹ¹Á°¤Îưºî¤òÊÖ¤¹¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë sigvec ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£ sig ¤Îưºî¤òÊѹ¹¤»¤º¤Ë¸½ºß¤Îưºî¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë¤Ï¡¢ vec ¤Ë NULL ¤ò»ØÄꤷ¡¢ ovec ¤Ë NULL ¤Ç¤Ê¤¤¥Ý¥¤¥ó¥¿¤ò»ØÄꤹ¤ì¤Ð¤è¤¤¡£

SIGKILL ¤È SIGSTOP ¤Îưºî¤ÏÊѹ¹¤Ç¤­¤Ê¤¤¡£

sigvec ¹½Â¤ÂΤϰʲ¼¤ÎÄ̤ê¤Ç¤¢¤ë:

 
 struct sigvec {
     void (*sv_handler)();  /* Signal disposition */
     int    sv_mask;        /* Signals to be blocked in handler */
     int    sv_flags;       /* Flags */
 };
 
 
sv_handler ¥Õ¥£¡¼¥ë¥É¤Ï¥·¥°¥Ê¥ë¤Îưºî¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¡¢ ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é´Ø¿ô¤Î¥¢¥É¥ì¥¹¤«¡¢ SIG_DFL ¤È SIG_IGN ¤Î¤¤¤º¤ì¤«¤ò»ØÄê¤Ç¤­¤ë¡£ SIG_DFL ¤Ï¥·¥°¥Ê¥ë¤ËŬÍѤµ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤Îưºî¤ò°ÕÌ£¤·¡¢ SIG_IGN ¤Ï¥·¥°¥Ê¥ë¤ò̵»ë¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£

sv_handler ¤Ë¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Î¥¢¥É¥ì¥¹¤ò»ØÄꤷ¤¿¾ì¹ç¡¢ sv_mask ¤Ï¥Ï¥ó¥É¥é¤¬¼Â¹ÔÃæ¤Ë¥Ö¥í¥Ã¥¯¤µ¤ì¤ë¤Ù¤­¥·¥°¥Ê¥ë¤Î¥Þ¥¹¥¯¤ò»ØÄꤹ¤ë¡£ ¤Þ¤¿¡¢¥Ï¥ó¥É¥é¤òµ¯Æ°¤·¤¿¥·¥°¥Ê¥ë¼«¿È¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥Ö¥í¥Ã¥¯¤µ¤ì¤ë¡£ SIGKILL ¤« SIGSTOP ¤ò¥Ö¥í¥Ã¥¯¤·¤è¤¦¤È¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ÌۤäÆÌµ»ë¤µ¤ì¤ë¡£

sv_handler ¤Ë¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Î¥¢¥É¥ì¥¹¤ò»ØÄꤷ¤¿¾ì¹ç¡¢ sv_flags ¥Õ¥£¡¼¥ë¥É¤Ï¥Ï¥ó¥É¥é¤¬¸Æ¤Ð¤ì¤¿ºÝ¤Îµóư¤òÀ©¸æ¤¹¤ë¥Õ¥é¥°¤ò»ØÄꤹ¤ë¡£ ¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤Ï¡¢0 ¤«¡¢°Ê²¼¤Î¥Õ¥é¥°¤ò 1¸Ä°Ê¾å»ØÄê¤Ç¤­¤ë:

SV_INTERRUPT
¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤¬Ää»ßÃæ¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤òÃæÃǤ·¤¿¾ì¹ç¡¢ ¥Ï¥ó¥É¥é¤«¤éÉüµ¢¤·¤Æ¤â¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÏºÆ³«¤µ¤ì¤º¡¢ ¥¨¥é¡¼ EINTR ¤Ç¼ºÇÔ¤¹¤ë¡£ ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï ¥Ç¥Õ¥©¥ë¥È¤ÇºÆ³«¤µ¤ì¤ë¡£
SV_RESETHAND
¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥·¥°¥Ê¥ë¤Îưºî¤ò ¥Ç¥Õ¥©¥ë¥È¤Ë¥ê¥»¥Ã¥È¤¹¤ë¡£ ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¤â¤¦°ìÅÙ sigvec() ¤ò¸Æ¤Ó½Ð¤·¤ÆÌÀ¼¨Åª¤Ëºï½ü¤µ¤ì¤ë¤«¡¢¥×¥í¥»¥¹¤¬ execve(2) ¤ò¼Â¹Ô¤¹¤ë¤Þ¤Ç¡¢¥Ï¥ó¥É¥é¤ÏÀßÄꤵ¤ì¤¿¤Þ¤Þ¤È¤Ê¤ë¡£
SV_ONSTACK
ÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¾å¤Ç¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ò¼Â¹Ô¤¹¤ë (Îò»ËŪ¤Ë¡¢BSD ¤Ç¤ÏÂåÂØ¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯¤ÏÇѻߤµ¤ì¤¿´Ø¿ô sigstack() ¤ò»È¤Ã¤ÆÀßÄꤹ¤ë¡£POSIX ¤Ç¤Ï¡¢Âå¤ï¤ê¤Ë sigaltstack() ¤ò»ÈÍѤ¹¤ë)¡£

´Ø¿ô sigmask() ¤Ï signum ¤ËÂФ¹¤ë¡Ö¥·¥°¥Ê¥ë¥Þ¥¹¥¯¡×¤ò¹½À®¤·¤ÆÊÖ¤¹¡£ Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥É¤ò»È¤¦¤È¡¢ sigvec() ¤ËÅϤ¹ vec.sv_mask ¤ò½é´ü²½¤Ç¤­¤ë¡£

 
     vec.sv_mask = sigmask(SIGQUIT) | sigpause (SIGABRT);
                 /* Block SIGQUIT and SIGABRT during 
                    handler execution */
 

sigblock() ´Ø¿ô¤Ï¡¢ mask ¤Ë¤¢¤ë¥·¥°¥Ê¥ë¤ò¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤ËÄɲä· (POSIX ¤Î sigprocmask(SIG_BLOCK) ¤ÈƱÍÍ)¡¢Êѹ¹Á°¤Î¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤òÊÖ¤¹¡£ SIGKILL ¤ä SIGSTOP ¤ò¥Ö¥í¥Ã¥¯¤·¤è¤¦¤È¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ÌۤäÆÌµ»ë¤µ¤ì¤ë¡£

sigsetmask() ´Ø¿ô¤Ï¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤ò mask ¤Ç»ØÄꤵ¤ì¤¿ÃͤËÀßÄꤷ (POSIX ¤Î sigprocmask(SIG_SETMASK) ¤ÈƱÍÍ)¡¢Êѹ¹Á°¤Î¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤òÊÖ¤¹¡£

siggetmask() ´Ø¿ô¤Ï¥×¥í¥»¥¹¤Î¸½ºß¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤òÊÖ¤¹¡£¤³¤Î´Ø¿ô¤Ï sigblock(0) ¤ÈÅù²Á¤Ç¤¢¤ë¡£

ÊÖ¤êÃÍ

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

sigblock() ¤È sigsetmask() ¤ÏÊѹ¹Á°¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤òÊÖ¤¹¡£

sigmask() ´Ø¿ô¤Ï signum ¤Î¥·¥°¥Ê¥ë¥Þ¥¹¥¯¤òÊÖ¤¹¡£

¥¨¥é¡¼

sigaction(2) ¤È sigprocmask(2) ¤Î¡Ö¥¨¥é¡¼¡×¤ÎÀá¤ò»²¾È¡£

Ãí°Õ

4.3BSD ¤Ç¤Ï¡¢¿®ÍêÀ­¤Î¤¢¤ë¥·¥°¥Ê¥ë½èÍýµ¡¹½¤òÄ󶡤¹¤ë (vec.sv_mask ¤ò 0 ¤Ç sigvec() ¤ò¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÈƱÍÍ)¡£ System V ¤¬Ä󶡤¹¤ë½èÍýµ¡¹½¤Ï¿®ÍêÀ­¤Î¤Ê¤¤¤â¤Î¤Ç¤¢¤ë¡£ POSIX.1-2001 ¤Ç¤Ï¡¢ signal() ¤Î¤³¤ÎÅÀ¤Ïµ¬Äꤷ¤Ê¤¤¤Þ¤Þ¤È¤Ê¤Ã¤Æ¤¤¤ë¡£ ¤µ¤é¤Ê¤ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï signal(2) ¤ò»²¾È¡£

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

½àµò

¤³¤ì¤é¤Î´Ø¿ô¤Î¤¦¤Á siggetmask() °Ê³°¤ÎÁ´¤Æ¤Ï 4.3BSD ¤Ë¤¢¤Ã¤¿¡£ siggetmask() ¤Î½Ð¼«¤Ï¤Ï¤Ã¤­¤ê¤·¤Ê¤¤¡£ ¤³¤ì¤é¤Î´Ø¿ô¤ÏÇÑ»ßͽÄê¤Ç¤¢¤ê¡¢¿·¤·¤¤¥×¥í¥°¥é¥à¤Ç¤Ï»ÈÍѤ·¤Ê¤¤¤³¤È¡£

´ØÏ¢¹àÌÜ

kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), raise(3), sigpause(3), sigset(3), signal(7)
D'ailleurs, au lieu de ranger ma chambre aujourd'hui, j'ai rajouté des
photos en plein jour de la super belle vue de ma chambre situé dans la
plus belle ville de France: La Bretagne
-+- NLS in GFA : Et ça a eu le bac... -+-