Man page - sigvec(3)

Packages contains this manual

Available languages:

en fr ja ru

Manual

SIGVEC

名 前
書 åŧ
čĒŦ 明
čŋ” り 値
エ ナ ãƒŧ
バ ãƒŧ ジ ョ ãƒŗ
åąž 性
æē– 拠
æŗ¨ 意
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

sigvec, sigblock, sigsetmask, siggetmask, sigmask - BSD į‰ˆ ã‚ˇ グ ナ ãƒĢ API

書 åŧ

#include <signal.h>

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

int sigmask(int signum );

int sigblock(int mask );

int sigsetmask(int mask );

int siggetmask(void);

glibc 向 け ぎ 抟 čƒŊ 検 æŸģ マ ク ロ ぎ čρ äģļ ( feature_test_macros (7) 参 į…§ ):

All functions shown above:
Since glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 and earlier:
_BSD_SOURCE

čĒŦ 明

こ れ ら ぎ é–ĸ 数 は 、 昔 ãĒ が ら ぎ 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)(int); /* 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 (2) を äŊŋ ᔍ す る )。

マ ク ロ sigmask () は signum ãĢ 寞 す る 「 ã‚ˇ グ ナ ãƒĢ マ ゚ ク 」 を 構 成 し ãĻ čŋ” す 。 例 え ば 、 äģĨ 下 ぎ よ う ãĒ ã‚ŗ ãƒŧ ド を äŊŋ う と 、 sigvec () ãĢ æ¸Ą す vec.sv_mask を 初 期 化 で き る 。

vec.sv_mask = sigmask(SIGQUIT) | sigmask(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) ぎ 「 エ ナ ãƒŧ 」 ぎ ᝀ を 参 į…§ 。

バ ãƒŧ ジ ョ ãƒŗ

バ ãƒŧ ジ ョ ãƒŗ 2.21 äģĨ 降 で は 、 GNU C ナ イ ブ ナ ãƒĒ は も は や sigvec () é–ĸ 数 を ABI ぎ 一 部 と し ãĻ å…Ŧ 開 し ãĒ く ãĒ ãŖ た 。 (垌 æ–š äē’ æ› 性 を äŋ č¨ŧ す る た め ãĢ 、 glibc ぎ ã‚ˇ ãƒŗ ボ ãƒĢ ぎ バ ãƒŧ ジ ョ ãƒŗ äģ˜ ã‘ 抟 構 ãĢ よ り 、 古 い バ ãƒŧ ジ ョ ãƒŗ ぎ ナ イ ブ ナ ãƒĒ と ãƒĒ ãƒŗ ク さ れ た バ イ ナ ãƒĒ ãĢ 寞 し ãĻ は こ ぎ イ ãƒŗ ã‚ŋ ãƒŧ フ ェ ãƒŧ ゚ が åŧ• き įļš ã å…Ŧ 開 さ れ ãĻ い る 。 )

åąž 性

こ ぎ ᝀ で äŊŋ ᔍ さ れ ãĻ い る ᔍ čĒž ぎ čĒŦ 明 ãĢ つ い ãĻ は 、 attributes (7) を 参 į…§ 。

Image grohtml-20370-1.png

æē– 拠

こ れ ら ぎ é–ĸ 数 ぎ う ãĄ siggetmask () äģĨ 外 ぎ 全 ãĻ は 4.3BSD ãĢ あ ãŖ た 。 siggetmask () ぎ å‡ē č‡Ē は は ãŖ き り し ãĒ い 。 こ れ ら ぎ é–ĸ 数 は åģƒ æ­ĸ äēˆ åŽš で あ り 、 新 し い プ ロ グ ナ ム で は äŊŋ ᔍ し ãĒ い こ と 。

æŗ¨ 意

4.3BSD で は 、 äŋĄ é ŧ 性 ぎ あ る ã‚ˇ グ ナ ãƒĢ å‡Ļ ᐆ 抟 構 を 提 供 す る ( vec.sv_mask を 0 で sigvec () を å‘ŧ ãŗ å‡ē し た と き と 同 様 )。 System V が 提 供 す る å‡Ļ ᐆ 抟 構 は äŋĄ é ŧ 性 ぎ ãĒ い も ぎ で あ る 。 POSIX.1 で は 、 signal () ぎ こ ぎ į‚š は čĻ 厚 し ãĒ い ぞ ぞ と ãĒ ãŖ ãĻ い る 。 さ ら ãĒ る čŠŗ į´° ãĢ つ い ãĻ は signal (2) を 参 į…§ 。

BSD と System V ぎ お ãĄ ら ぎ ã‚ˇ ゚ テ ム で も ã‚ˇ グ ナ ãƒĢ を åž… つ た め ãĢ 、 sigpause (3) と い う 名 前 ぎ é–ĸ 数 が 提 供 さ れ ãĻ い る が 、 こ ぎ é–ĸ 数 ぎ åŧ• 数 は 严 æ–š ぎ ã‚ˇ ゚ テ ム で į•° ãĒ る 。 čŠŗ į´° は sigpause (3) を 参 į…§ 。

é–ĸ 逪 項 į›Ž

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

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。