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

NAME

getauxval - 보쑰 λ²‘ν„°μ˜ κ°’ μ–»κΈ°

SYNOPSIS

#include <sys/auxv.h>

unsigned long getauxval(unsigned long type);

DESCRIPTION

getauxval() ν•¨μˆ˜λŠ” 보쑰 벑터(auxiliary vector)μ—μ„œ 값을 μ–»μ–΄ μ˜¨λ‹€. 보쑰 λ²‘ν„°λŠ” μ»€λ„μ˜ ELF λ°”μ΄λ„ˆλ¦¬ λ‘œλ”μ—μ„œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  λ•Œ νŠΉμ • 정보듀을 μ‚¬μš©μž κ³΅κ°„μœΌλ‘œ μ „λ‹¬ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ΄λ‹€.

보쑰 λ²‘ν„°μ˜ 각 ν•­λͺ©μ€ 두 κ°’μœΌλ‘œ 이뀄져 μžˆλŠ”λ°, κ·Έ ν•­λͺ©μ΄ λ­”μ§€ λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…κ³Ό κ·Έ 값이닀. getauxval()은 인자 type을 λ°›μ•„μ„œ λŒ€μ‘ν•˜λŠ” 값을 λ°˜ν™˜ν•œλ‹€.

각 typeλ³„λ‘œ λ°˜ν™˜λ˜λŠ” 값이 μ•„λž˜ λͺ©λ‘μ— λ‚˜μ™€ μžˆλ‹€. λͺ¨λ“  μ•„ν‚€ν…μ²˜μ— λͺ¨λ“  type 값듀이 μžˆλŠ” 건 μ•„λ‹ˆλ‹€.

AT_BASE
ν”„λ‘œκ·Έλž¨ 인터프리터(일반적으둜 동적 링컀)의 κΈ°μ€€ μ£Όμ†Œ.
AT_BASE_PLATFORM
μ‹€μ œ ν”Œλž«νΌμ„ λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄. AT_PLATFORMκ³Ό λ‹€λ₯Ό μˆ˜λ„ 있음 (PowerPC ν•œμ •).
AT_CLKTCK
times(2)의 카운트 λΉˆλ„. sysconf(_SC_CLK_TCK)λ‘œλ„ 이 값을 얻을 수 μžˆλ‹€.
AT_DCACHEBSIZE
데이터 μΊμ‹œ 블둝 크기.
AT_EGID
μŠ€λ ˆλ“œμ˜ μ‹€νš¨ κ·Έλ£Ή ID.
AT_ENTRY
μ‹€ν–‰ 파일의 μ§„μž…μ  μ£Όμ†Œ.
AT_EUID
μŠ€λ ˆλ“œμ˜ μ‹€νš¨ μ‚¬μš©μž ID.
AT_EXECFD
ν”„λ‘œκ·Έλž¨μ˜ 파일 λ””μŠ€ν¬λ¦½ν„°.
AT_EXECFN
ν”„λ‘œκ·Έλž¨ 싀행에 쓰인 경둜λͺ….
AT_FLAGS
ν”Œλž˜κ·Έ (μ‚¬μš© μ•ˆ 함).
AT_FPUCW
μ‚¬μš©ν•œ FPU 컨트둀 μ›Œλ“œ (SuperH μ•„ν‚€ν…μ²˜ ν•œμ •). μ»€λ„μ—μ„œ μˆ˜ν–‰ν•œ FPU μ΄ˆκΈ°ν™”μ— λŒ€ν•œ 일뢀 정보λ₯Ό μ€€λ‹€.
AT_GID
μŠ€λ ˆλ“œμ˜ μ‹€μ œ κ·Έλ£Ή ID.
AT_HWCAP
μ•„ν‚€ν…μ²˜ 및 ABI에 따라 λ‹¬λΌμ§€λŠ” λΉ„νŠΈ 마슀크이며 세뢀적인 ν”„λ‘œμ„Έμ„œ λŠ₯λ ₯듀을 λ‚˜νƒ€λ‚Έλ‹€. λΉ„νŠΈ 마슀크의 λ‚΄μš©λ¬Όμ€ ν•˜λ“œμ›¨μ–΄μ— 따라 λ‹€λ₯΄λ‹€. (예λ₯Ό λ“€μ–΄ 인텔 x86 μ•„ν‚€ν…μ²˜μ— κ΄€ν•œ μ„ΈλΆ€ 사항은 컀널 μ†ŒμŠ€ 파일의 arch/x86/include/asm/cpufeature.h μ°Έκ³ . κ±°κΈ° 기술된 λ°°μ—΄μ˜ 첫 번째 32λΉ„νŠΈ μ›Œλ“œκ°€ λ°˜ν™˜λ˜λŠ” 값이닀.) μ‚¬λžŒμ΄ 읽을 수 μžˆλŠ” ν˜•νƒœμ˜ 같은 정보λ₯Ό /proc/cpuinfoμ—μ„œ λ³Ό 수 μžˆλ‹€.
AT_HWCAP2 (glibc 2.18λΆ€ν„°)
ν”„λ‘œμ„Έμ„œ κΈ°λŠ₯에 λŒ€ν•œ 더 λ§Žμ€ 머신별 힌트.
AT_ICACHEBSIZE
μΈμŠ€νŠΈλŸ­μ…˜ μΊμ‹œ 블둝 크기.
AT_PAGESZ
μ‹œμŠ€ν…œ νŽ˜μ΄μ§€ 크기. (sysconf(_SC_PAGESIZE)κ°€ λ°˜ν™˜ν•˜λŠ” κ°’κ³Ό 동일.)
AT_PHDR
μ‹€ν–‰ 파일의 ν”„λ‘œκ·Έλž¨ ν—€λ”λ“€μ˜ μ£Όμ†Œ.
AT_PHENT
ν”„λ‘œκ·Έλž¨ 헀더 ν•­λͺ© 크기.
AT_PHNUM
ν”„λ‘œκ·Έλž¨ 헀더 개수.
AT_PLATFORM
ν”„λ‘œκ·Έλž¨μ΄ 돌고 μžˆλŠ” ν•˜λ“œμ›¨μ–΄ ν”Œλž«νΌμ„ λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄μ— λŒ€ν•œ 포인터. 동적 λ§μ»€μ—μ„œ rpath κ°’ 해석 μ‹œ 이 값을 μ‚¬μš©ν•œλ‹€.
AT_RANDOM
λ‚œμˆ˜ 값을 담은 μ—΄μ—¬μ„― λ°”μ΄νŠΈμ˜ μ£Όμ†Œ.
AT_SECURE
이 μ‹€ν–‰ 파일이 μ•ˆμ „ν•˜κ²Œ 닀뀄지고 있으면 0 μ•„λ‹Œ 값을 κ°€μ§„λ‹€. 0 μ•„λ‹Œ 값이 보톡은 ν”„λ‘œμ„ΈμŠ€κ°€ set-user-ID λ‚΄μ§€ set-group-ID λ°”μ΄λ„ˆλ¦¬λ₯Ό μ‹€ν–‰ν•˜κ³  μžˆμŒμ„ (κ·Έλž˜μ„œ μ‹€μ œ UID λ‚΄μ§€ GIDκ°€ μ‹€νš¨ UID λ‚΄μ§€ GID와 닀름을), λ˜λŠ” μ—­λŠ₯을 κ°€μ§„ λ°”μ΄λ„ˆλ¦¬ νŒŒμΌμ„ μ‹€ν–‰ν•΄μ„œ μ—­λŠ₯(capabilities(7) μ°Έκ³ )을 μ–»μ—ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. λ˜λŠ” λ¦¬λˆ…μŠ€ λ³΄μ•ˆ λͺ¨λ“ˆμ— μ˜ν•œ 것일 μˆ˜λ„ μžˆλ‹€. 이 값이 0이 아닐 λ•Œ 동적 λ§μ»€μ—μ„œλŠ” νŠΉμ • ν™˜κ²½ λ³€μˆ˜λ“€μ˜ μ‚¬μš©μ„ λΉ„ν™œμ„±ν™”ν•˜λ©° (ld-linux.so(8) μ°Έκ³ ) glibcμ—μ„œλ„ 여타 λ™μž‘ 방식듀을 λ°”κΎΌλ‹€. (secure_getenv(3) μ°Έκ³ .)
AT_SYSINFO
vDSO λ‚΄μ˜ μ‹œμŠ€ν…œ 호좜 ν•¨μˆ˜ μ§„μž…μ . λͺ¨λ“  μ•„ν‚€ν…μ²˜μ— μžˆλŠ”/ν•„μš”ν•œ 것은 μ•„λ‹˜ (κ°€λ Ή x86-64μ—λŠ” μ—†μŒ).
AT_SYSINFO_EHDR
μ»€λ„μ—μ„œ νŠΉμ • μ‹œμŠ€ν…œ ν˜ΈμΆœλ“€μ˜ λΉ λ₯Έ κ΅¬ν˜„μ„ μ œκ³΅ν•˜κΈ° μœ„ν•΄ μƒμ„±ν•˜λŠ” 가상 동적 곡유 였브젝트(vDSO)λ₯Ό 담은 νŽ˜μ΄μ§€μ˜ μ£Όμ†Œ.
AT_UCACHEBSIZE
톡합 μΊμ‹œ 블둝 크기.
AT_UID
μŠ€λ ˆλ“œμ˜ μ‹€μž¬ μ‚¬μš©μž ID.

RETURN VALUE

성곡 μ‹œ getauxval()은 type에 λŒ€μ‘ν•˜λŠ” 값을 λ°˜ν™˜ν•œλ‹€. type을 찾을 수 μ—†μœΌλ©΄ 0을 λ°˜ν™˜ν•œλ‹€.

ERRORS

ENOENT (glibc 2.19λΆ€ν„°)
보쑰 λ²‘ν„°μ—μ„œ type에 λŒ€μ‘ν•˜λŠ” ν•­λͺ©μ„ 찾을 수 μ—†λ‹€.

VERSIONS

glibc 버전 2.16μ—μ„œ getauxval() ν•¨μˆ˜κ°€ μΆ”κ°€λ˜μ—ˆλ‹€.

ATTRIBUTES

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

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

CONFORMING TO

이 ν•¨μˆ˜λŠ” λΉ„ν‘œμ€€ glibc ν™•μž₯이닀.

NOTES

보쑰 벑터 λ‚΄ μ •λ³΄μ˜ 주된 μ†ŒλΉ„μžλŠ” 동적 링컀인 ld-linux.so(8)이닀. 보쑰 λ²‘ν„°λŠ” 동적 λ§μ»€μ—μ„œ μΌλ°˜μ μœΌλ‘œλ‚˜ μƒμ‹œμ μœΌλ‘œ ν•„μš”ν•œ 일ꡰ의 ν‘œμ€€ 정보듀을 컀널이 전달해 쀄 수 μžˆλŠ” νŽΈλ¦¬ν•˜κ³  효율적인 방법이닀. 일뢀 경우 μ‹œμŠ€ν…œ 호좜둜 같은 정보λ₯Ό 얻을 μˆ˜λ„ μžˆμ§€λ§Œ 보쑰 벑터λ₯Ό μ“°λŠ” 게 λΉ„μš©μ΄ μž‘λ‹€.

보쑰 λ²‘ν„°λŠ” ν”„λ‘œμ„ΈμŠ€ μ£Όμ†Œ κ³΅κ°„μ—μ„œ 인자 λͺ©λ‘ 및 ν™˜κ²½ λ°”λ‘œ μœ„μ— μœ„μΉ˜ν•΄ μžˆλ‹€. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œ ν™˜κ²½ λ³€μˆ˜ LD_SHOW_AUXVλ₯Ό μ„€μ •ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ— 제곡된 보쑰 벑터λ₯Ό λ³Ό 수 μžˆλ‹€.

$ LD_SHOW_AUXV=1 sleep 1

/proc/[pid]/auxvλ₯Ό 톡해 μž„μ˜ ν”„λ‘œμ„ΈμŠ€μ˜ 보쑰 벑터λ₯Ό (파일 κΆŒν•œμ— 따라) 얻을 수 μžˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ proc(5) μ°Έκ³ .

BUGS

glibc 2.19μ—μ„œ ENOENT 였λ₯˜κ°€ μΆ”κ°€λ˜κΈ° μ „μ—λŠ” type을 찾을 수 μ—†λŠ” κ²½μš°μ™€ type에 λŒ€μ‘ν•˜λŠ” 값이 0인 경우λ₯Ό λͺ…ν™•ν•˜κ²Œ ꡬ별할 방법이 μ—†μ—ˆλ‹€.

SEE ALSO

secure_getenv(3), vdso(7), ld-linux.so(8)


2017-09-15

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