pthread_attr_setstack(3) - wariua/manpages-ko GitHub Wiki

NAME

pthread_attr_setstack, pthread_attr_getstack - μŠ€λ ˆλ“œ 속성 객체의 μŠ€νƒ 속성 μ„€μ •ν•˜κΈ°/μ–»κΈ°

SYNOPSIS

#include <pthread.h>

int pthread_attr_setstack(pthread_attr_t *attr,
                          void *stackaddr, size_t stacksize);
int pthread_attr_getstack(const pthread_attr_t *attr,
                          void **stackaddr, size_t *stacksize);

-pthread둜 컴파일 및 링크.

glibc κΈ°λŠ₯ 확인 맀크둜 μš”κ±΄ (feature_test_macros(7) μ°Έκ³ ):

pthread_attr_getstack(), pthread_attr_setstack():
_POSIX_C_SOURCE >= 200112L

DESCRIPTION

pthread_attr_setstack() ν•¨μˆ˜λŠ” attr이 κ°€λ¦¬ν‚€λŠ” μŠ€λ ˆλ“œ 속성 객체의 μŠ€νƒ μ£Όμ†Œ 및 μŠ€νƒ 크기 속성을 각각 stackaddr 및 stacksize에 μ§€μ •ν•œ κ°’λ“€λ‘œ μ„€μ •ν•œλ‹€. 이 속성듀은 μŠ€λ ˆλ“œ 속성 객체 attr을 μ΄μš©ν•΄ μƒμ„±ν•˜λŠ” μŠ€λ ˆλ“œμ—μ„œ μ‚¬μš©ν•  μŠ€νƒμ˜ μœ„μΉ˜μ™€ 크기λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

stackaddr은 ν˜ΈμΆœμžκ°€ ν• λ‹Ήν•œ stacksize λ°”μ΄νŠΈμ§œλ¦¬ λ²„νΌμ—μ„œ κ°€μž₯ μ•„λž˜ μ£Όμ†Œμ˜ λ°”μ΄νŠΈλ₯Ό κ°€λ¦¬μΌœμ•Ό ν•œλ‹€. ν• λ‹Ήν•œ λ²„νΌμ˜ νŽ˜μ΄μ§€λ“€μ€ 읽기와 μ“°κΈ°κ°€ λͺ¨λ‘ κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.

pthread_attr_getstack() ν•¨μˆ˜λŠ” attr이 κ°€λ¦¬ν‚€λŠ” μŠ€λ ˆλ“œ 속성 객체의 μŠ€νƒ μ£Όμ†Œ 및 μŠ€νƒ 크기 속성을 각각 stackaddr 및 stacksizeκ°€ κ°€λ¦¬ν‚€λŠ” λ²„νΌλ‘œ λ°˜ν™˜ν•œλ‹€.

RETURN VALUE

성곡 μ‹œ 이 ν•¨μˆ˜λ“€μ€ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ 0 μ•„λ‹Œ 였λ₯˜ 번호λ₯Ό λ°˜ν™˜ν•œλ‹€.

ERRORS

pthread_attr_setstack()이 λ‹€μŒ 였λ₯˜λ‘œ μ‹€νŒ¨ν•  수 μžˆλ‹€.

EINVAL
stacksizeκ°€ PTHREAD_STACK_MIN(16384)λ°”μ΄νŠΈλ³΄λ‹€ μž‘λ‹€. 일뢀 μ‹œμŠ€ν…œμ—μ„œλŠ” stackaddrμ΄λ‚˜ stackaddr + stacksizeκ°€ μ˜¬λ°”λ‘œ μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•Šμ€ κ²½μš°μ—λ„ 이 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλ‹€.

POSIX.1μ—μ„œλŠ” stackaddr 및 stacksizeκ°€ κΈ°μˆ ν•˜λŠ” μŠ€νƒμ΄ ν˜ΈμΆœμžμ—κ²Œ 읽기와 μ“°κΈ° λͺ¨λ‘ κ°€λŠ₯ν•˜μ§€ μ•Šμ€ 경우 EACCES 였λ₯˜λ„ 적고 μžˆλ‹€.

VERSIONS

glibc 버전 2.2λΆ€ν„° 이 ν•¨μˆ˜λ“€μ„ μ œκ³΅ν•œλ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
pthread_attr_setstack(),
pthread_attr_getstack()
μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

NOTES

이 ν•¨μˆ˜λ“€μ€ μŠ€λ ˆλ“œμ˜ μŠ€νƒμ΄ νŠΉμ • μœ„μΉ˜μ— μžˆλ„λ‘ ν•΄μ•Ό ν•˜λŠ” μ‘μš©λ“€μ„ μœ„ν•œ 것이닀. λŒ€λΆ€λΆ„ μ‘μš©μ—μ„œλŠ” 그럴 ν•„μš”κ°€ μ—†μœΌλ―€λ‘œ 이 ν•¨μˆ˜λ“€μ„ μ“°μ§€ μ•ŠλŠ” 게 μ’‹λ‹€. (μ‘μš©μ—μ„œ ν•„μš”ν•œ 게 κΈ°λ³Έκ³Ό λ‹€λ₯Έ μŠ€νƒ 크기일 뿐이라면 pthread_attr_setstacksize(3)λ₯Ό μ“°λ©΄ λœλ‹€.)

μ‘μš©μ—μ„œ pthread_attr_setstack()을 μ΄μš©ν•  λ•ŒλŠ” μŠ€νƒμ„ ν• λ‹Ήν•  μ±…μž„μ„ ν•¨κ»˜ κ°€μ Έκ°„λ‹€. pthread_attr_setguardsize(3)둜 μ„€μ •ν•œ 방호 ꡬ역 크기 값이 λ¬΄μ‹œλœλ‹€. ν•„μš”μ‹œ μŠ€νƒ μ˜€λ²„ν”Œλ‘œμš° κ°€λŠ₯성에 λŒ€μ²˜ν•˜κΈ° μœ„ν•΄ 방호 ꡬ역(읽기 및 μ“°κΈ°κ°€ μ•ˆ 되게 보호된 ν•œ 개 μ΄μƒμ˜ νŽ˜μ΄μ§€)을 ν• λ‹Ήν•˜λŠ” 것은 μ‘μš©μ˜ λͺ«μ΄λ‹€.

stackaddr둜 μ§€μ •ν•˜λŠ” μ£Όμ†Œκ°€ 적절히 μ •λ ¬λ˜μ–΄ μžˆλŠ” 게 μ’‹λ‹€. μ™„μ „ν•œ 이식성을 μœ„ν•΄μ„  νŽ˜μ΄μ§€ 경계(sysconf(_SC_PAGESIZE))에 맞좰 μ •λ ¬ν•˜λ©΄ λœλ‹€. 할당에 posix_memalign(3)이 도움이 될 수 μžˆλ‹€. stacksize μ—­μ‹œλ„ μ‹œμŠ€ν…œ νŽ˜μ΄μ§€ 크기의 배수둜 ν•˜λŠ” 게 쒋을 것이닀.

attr을 μ‚¬μš©ν•΄ μ—¬λŸ¬ μŠ€λ ˆλ“œλ₯Ό μƒμ„±ν•˜λŠ” κ²½μš°μ— ν˜ΈμΆœμžλŠ” pthread_create(3) ν˜ΈμΆœλ“€ 간에 μŠ€νƒ μ£Όμ†Œ 속성을 λ°”κΏ” μ£Όμ–΄μ•Ό ν•œλ‹€. μ•ˆ 그러면 μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ 같은 λ©”λͺ¨λ¦¬ ꡬ역을 μŠ€νƒμœΌλ‘œ μ“°λ €κ³  ν•˜λ©΄μ„œ ν˜Όλž€μ΄ λ’€λ”°λ₯Ό 것이닀.

EXAMPLE

pthread_attr_init(3) μ°Έκ³ .

SEE ALSO

mmap(2), mprotect(2), posix_memalign(3), pthread_attr_init(3), pthread_attr_setguardsize(3), pthread_attr_setstackaddr(3), pthread_attr_setstacksize(3), pthread_create(3), pthreads(7)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️