pthread_attr_setguardsize(3) - wariua/manpages-ko GitHub Wiki
pthread_attr_setguardsize, pthread_attr_getguardsize - μ€λ λ μμ± κ°μ²΄μ λ°©νΈ κ΅¬μ ν¬κΈ° μ€μ νκΈ°/μ»κΈ°
#include <pthread.h>
int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
int pthread_attr_getguardsize(const pthread_attr_t *attr, size_t *guardsize);
-pthread
λ‘ μ»΄νμΌ λ° λ§ν¬.
pthread_attr_setguardsize()
ν¨μλ attr
μ΄ κ°λ¦¬ν€λ μ€λ λ μμ± κ°μ²΄μ λ°©νΈ κ΅¬μ ν¬κΈ° μμ±μ guardsize
μ μ§μ ν κ°μΌλ‘ μ€μ νλ€.
guardsize
κ° 0λ³΄λ€ ν¬λ©΄ attr
μ μ΄μ©ν΄ μμ±νλ μ μ€λ λ κ°κ°μ λν΄ μμ€ν
μμ μ€λ λ μ€ν λμ μ΅μ guardsize
λ°μ΄νΈμ μμμ μΆκ°λ‘ ν λΉν΄μ μ€νμ λ°©νΈ κ΅¬μ μν μ νκ² νλ€. (νμ§λ§ BUGS μ°Έκ³ .)
guardsize
κ° 0μ΄λ©΄ attr
λ‘ μμ±νλ μ μ€λ λμ λ°©νΈ κ΅¬μμ΄ μκ² λλ€.
κΈ°λ³Έ λ°©νΈ κ΅¬μ ν¬κΈ°λ μμ€ν νμ΄μ§ ν¬κΈ°μ κ°λ€.
attr
μ (pthread_attr_setstack(3)μ΄λ pthread_attr_setstackaddr(3)λ‘) μ€ν μ£Όμ μμ±μ΄ μ€μ λμ΄ μ€λ λμ μ€νμ νΈμΆμκ° ν λΉνλ κ²½μ°μλ λ°©νΈ κ΅¬μ ν¬κΈ° μμ±μ 무μνλ€. (μ¦ μμ€ν
μμ μ΄λ€ λ°©νΈ κ΅¬μλ λ§λ€μ§ μλλ€.) μμ©μ΄ μ€ν μ€λ²νλ‘μ° μ²λ¦¬λ₯Ό μ±
μμ§λ€. (mprotect(2)λ₯Ό μ΄μ©ν΄ ν λΉν μ€ν λμ λ°©νΈ κ΅¬μμ μλμΌλ‘ μ§μ ν μ μμ κ²μ΄λ€.)
pthread_attr_getguardsize()
ν¨μλ attr
μ΄ κ°λ¦¬ν€λ μ€λ λ μμ± κ°μ²΄μ λ°©νΈ κ΅¬μ ν¬κΈ° μμ±μ guardsize
κ° κ°λ¦¬ν€λ λ²νΌλ‘ λ°ννλ€.
μ±κ³΅ μ μ΄ ν¨μλ€μ 0μ λ°ννλ€. μ€λ₯ μ 0 μλ μ€λ₯ λ²νΈλ₯Ό λ°ννλ€.
POSIX.1μμλ attr
μ΄λ guardsize
κ° μ ν¨νμ§ μμ κ²½μ° EINVAL
μ€λ₯λ₯Ό μ κ³ μλ€. 리λ
μ€μμλ μ΄ ν¨μλ€μ΄ νμ μ±κ³΅νλ€. (κ·Έλ κΈ°λ νμ§λ§ μ΄μ κ°λ₯νκ³ λ―Έλλ₯Ό λλΉνλ μμ©μμλ κ°λ₯ν μ€λ₯ λ°νμ μ²λ¦¬ν΄μΌ ν κ²μ΄λ€.)
glibc λ²μ 2.1λΆν° μ΄ ν¨μλ€μ μ 곡νλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
pthread_attr_setguardsize() ,pthread_attr_getguardsize()
|
μ€λ λ μμ μ± | MT-Safe |
POSIX.1-2001, POSIX.1-2008.
λ°©νΈ κ΅¬μμ μ½κΈ° λ° μ°κΈ° μ κ·Όμ λ§λλ‘ λ³΄νΈλ κ°μ λ©λͺ¨λ¦¬ νμ΄μ§λ€λ‘ μ΄λ€μ§λ€. μ€λ λκ° κ·Έ λ°©νΈ κ΅¬μμΌλ‘ μ€νμ λμΉκ² νλ©΄ λλΆλΆμ νλμ¨μ΄ μν€ν
μ²μμ μ€λ²νλ‘μ°λ₯Ό μ리λ SIGSEGV
μκ·Έλμ λ°λλ€. λ°©νΈ κ΅¬μμ νμ΄μ§ κ²½κ³μμ μμνλ©° μ€λ λ μμ± μμ λ΄λΆμ μΌλ‘ λ°©νΈ κ΅¬μ ν¬κΈ°λ₯Ό μμ€ν
νμ΄μ§ ν¬κΈ°λ‘ μ¬λ¦Ό νλ€. (κ·Έλ κ² ν΄λ pthread_attr_getguardsize()
λ pthread_attr_setguardsize()
λ‘ μ€μ νλ λ°©νΈ κ΅¬μ ν¬κΈ°λ₯Ό λ°ννλ€.)
μ€λ λλ₯Ό λ§μ΄ μμ±νλ©° μ€ν μ€λ²νλ‘μ°κ° μ λ λ°μνμ§ μλ κ±Έ μλ μμ©μμλ λ°©νΈ κ΅¬μ ν¬κΈ°λ₯Ό 0μΌλ‘ μ€μ νλ κ² λ©λͺ¨λ¦¬ μ μ½μ λμμ΄ λ μ μλ€.
μ€λ λκ° μ€νμ ν° μλ£ κ΅¬μ‘°λ₯Ό ν λΉνλ κ²½μ° μ€ν μ€λ²νλ‘μ° νμ§λ₯Ό μν΄ κΈ°λ³Έλ³΄λ€ ν° λ°©νΈ κ΅¬μ ν¬κΈ°λ₯Ό ννλ κ²μ΄ νμν μ μλ€.
glibc 2.8 κΈ°μ€μΌλ‘ NPTL μ€λ λ© κ΅¬νμμλ POSIX.1μ μꡬλλ‘ μ€ν λμ μΆκ° 곡κ°μ ν λΉνμ§ μκ³ μ€ν ν λΉ ν¬κΈ°μ λ°©νΈ κ΅¬μ ν¬κΈ°λ₯Ό ν¬ν¨νλ€. (κ·Έλμ λ°©νΈ κ΅¬μ ν¬κΈ° κ°μ΄ μμ£Ό 컀μ μ€μ μ€νμ μν 곡κ°μ΄ μλ κ²½μ° pthread_create(3)μμ EINVAL
μ€λ₯κ° λ°μν μ μλ€.)
ꡬμ LinuxThreads ꡬνμμλ μ¬λ°λ‘ μ€ν λμ λ°©νΈ κ΅¬μμ μν μΆκ° 곡κ°μ ν λΉνλ€.
pthread_getattr_np(3) μ°Έκ³ .
mmap(2), mprotect(2), pthread_attr_init(3), pthread_attr_setstack(3), pthread_attr_setstacksize(3), pthread_create(3), pthreads(7)
2017-09-15