rt_sigqueueinfo(2) - wariua/manpages-ko GitHub Wiki
rt_sigqueueinfo, rt_tgsigqueueinfo - μκ·Έλκ³Ό λ°μ΄ν°λ₯Ό νμ λ£κΈ°
int rt_sigqueueinfo(pid_t tgid, int sig, siginfo_t *uinfo);
int rt_tgsigqueueinfo(pid_t tgid, pid_t tid, int sig,
siginfo_t *uinfo);
μ£Όμ: μ΄ μμ€ν νΈμΆλ€μ λν glibc λνΌκ° μλ€. NOTES μ°Έκ³ .
rt_sigqueueinfo()
λ° rt_tgsigqueueinfo()
μμ€ν
νΈμΆμ νλ‘μΈμ€λ μ€λ λμκ² μκ·Έλμ λ°μ΄ν°λ₯Ό λν΄ λ³΄λ΄λ λ° μ¬μ©νλ μ μμ€ μΈν°νμ΄μ€μ΄λ€. μμ μμμ sigaction(2) SA_SIGINFO
νλκ·Έλ‘ μκ·Έλ νΈλ€λ¬λ₯Ό μ€μ νμ¬ λλ° λ°μ΄ν°λ₯Ό μ»μ μ μλ€.
μ΄ μμ€ν νΈμΆλ€μ μμ©μμ μ§μ μ¬μ©νκΈ° μν κ²μ΄ μλλΌ sigqueue(3)μ pthread_sigqueue(3)λ₯Ό ꡬνν μ μλλ‘ μ 곡νλ κ²μ΄λ€.
rt_sigqueueinfo()
μμ€ν
νΈμΆμ IDκ° tgid
μΈ μ€λ λ κ·Έλ£Ήμκ² μκ·Έλ sig
λ₯Ό 보λΈλ€. ("μ€λ λ κ·Έλ£Ή"μ΄λΌλ μ©μ΄λ "νλ‘μΈμ€"μ λμμ΄μ΄λ©° tid
λ μ ν΅μ μΈ μ λμ€ νλ‘μΈμ€ IDμ ν΄λΉνλ€.) κ·Έ μ€λ λ κ·Έλ£Ήμ μμ ꡬμ±μμκ² (μ¦ νμ¬ κ·Έ μκ·Έλμ λ§κ³ μμ§ μμ μ€λ λλ€ μ€ νλμκ²) μκ·Έλμ΄ μ λ¬λλ€.
uinfo
μΈμλ μκ·Έλμ λλ°λλ λ°μ΄ν°λ₯Ό λνλΈλ€. μ΄ μΈμλ sigaction(2)μ κΈ°μ λ (κ·Έλ¦¬κ³ <sigaction.h>
λ₯Ό ν¬ν¨μμΌμ μ μνλ) siginfo_t
νμ
μ ꡬ쑰체μ λν ν¬μΈν°μ΄λ€. νΈμΆμκ° μ΄ κ΅¬μ‘°μ²΄μ λ€μ νλλ€μ μ€μ ν΄μΌ νλ€.
si_code
-
리λ
μ€ μ»€λ μμ€ νμΌ
include/asm-generic/siginfo.h
μ μλSI_*
μ½λλ€ μ€ νλμ¬μΌ νλ μ½λκ° μμμ¬μΌ νλ©° (μ¦ μ»€λμμ kill(2)λ‘ λ³΄λΈ μκ·Έλμ λνλ΄λ λ° μ°λSI_USER
μΌ μ μμΌλ©°) (리λ μ€ 2.6.39λΆν°) (컀λμμ tgkill(2)λ‘ λ³΄λΈ μκ·Έλμ λνλ΄λ λ° μ°λ)SI_TKILL
μΌ μ μλ€λ μ μ½μ΄ μλ€. si_pid
- νλ‘μΈμ€ IDλ‘ μ€μ ν΄μΌ νλλ°, 보ν΅μ μ‘μ μμ νλ‘μΈμ€ IDμ΄λ€.
si_uid
- μ¬μ©μ IDλ‘ μ€μ ν΄μΌ νλλ°, 보ν΅μ μ‘μ μμ μ€μ μ¬μ©μ IDμ΄λ€.
si_value
-
μ΄ νλλ μκ·Έλμ λλ°μν¬ μ¬μ©μ λ°μ΄ν°λ₯Ό λ΄λλ€. λ μμΈν μ 보λ sigqueue(3)μ λ§μ§λ§(
union sigval
) μΈμ μ€λͺ μ 보λΌ.
컀λμμ λ΄λΆμ μΌλ‘ si_signo
νλλ₯Ό sig
μ μ§μ λ κ°μΌλ‘ μ€μ ν΄μ μκ·Έλ μμ μκ° κ·Έ νλλ₯Ό ν΅ν΄μλ μκ·Έλ λ²νΈλ₯Ό μ»μ μ μλλ‘ νλ€.
rt_tgsigqueueinfo()
μμ€ν
νΈμΆμ rt_sigqueueinfo()
μ λΉμ·νλ μ€λ λ κ·Έλ£Ή ID tgid
μ μ€λ λ κ·Έλ£Ή λ΄ μ€λ λ tid
μ μ‘°ν©μΌλ‘ μ§μ ν ν μ€λ λμκ² μκ·Έλκ³Ό λ°μ΄ν°λ₯Ό 보λΈλ€.
μ±κ³΅ μ μ΄ μμ€ν
νΈμΆλ€μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° κ·Έ μ€λ₯λ₯Ό λνλ΄λλ‘ errno
λ₯Ό μ€μ νλ€.
EAGAIN
- νμ λ£μ μ μλ μκ·Έλ κ°μ νκ³μ λλ¬νλ€. (μμΈν λ΄μ©μ signal(7)μ 보λΌ.)
EINVAL
-
sig
λtgid
,tid
κ° μ ν¨νμ§ μλ€. EPERM
- νΈμΆμκ° λμμκ² μκ·Έλμ λ³΄λΌ κΆνμ κ°μ§κ³ μμ§ μλ€. νμν κΆνμ λν΄μ kill(2)μ 보λΌ. λλ
uinfo->si_code
κ° μ ν¨νμ§ μλ€. ESRCH
-
rt_sigqueueinfo()
:tgid
μ μΌμΉνλ μ€λ λ κ·Έλ£Ήμ μ°Ύμ μ μλ€.rt_tgsigqueueinfo()
:tgid
μtid
μ μΌμΉνλ μ€λ λλ₯Ό μ°Ύμ μ μλ€.
리λ
μ€ λ²μ 2.2μμ rt_sigqueueinfo()
μμ€ν
νΈμΆμ΄ μΆκ°λμλ€. 리λ
μ€ λ²μ 2.6.31μμ rt_tgsigqueueinfo()
μμ€ν
νΈμΆμ΄ μΆκ°λμλ€.
μ΄ μμ€ν νΈμΆλ€μ 리λ μ€ μ μ©μ΄λ€.
μ΄ μμ€ν νΈμΆλ€μ μμ©μμ μ°κΈ° μν κ²μ΄ μλλ―λ‘ glibc λνΌ ν¨μκ° μλ€. κ·Έλ΄ μΌμ μκ² μ§λ§ νΉμλΌλ μ§μ νΈμΆνκ³ μΆμ κ²½μ°μλ syscall(2)μ μ΄μ©νλ©΄ λλ€.
kill(2)μμμ²λΌ λ μκ·Έλ(0)μ μ¬μ©ν΄μ μ§μ ν νλ‘μΈμ€ λ΄μ§ μ€λ λκ° μ‘΄μ¬νλμ§ νμΈν μ μλ€.
kill(2), sigaction(2), sigprocmask(2), tgkill(2), pthread_sigqueue(3), sigqueue(3), signal(7)
2017-09-15