brk(2) - wariua/manpages-ko GitHub Wiki

NAME

brk, sbrk - ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ ๋ฐ”๊พธ๊ธฐ

SYNOPSIS

#include <unistd.h>

int brk(void *addr);

void *sbrk(intptr_t increment);

glibc ๊ธฐ๋Šฅ ํ™•์ธ ๋งคํฌ๋กœ ์š”๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):

brk(), sbrk():
glibc 2.19๋ถ€ํ„ฐ:
_DEFAULT_SOURCE ||
(_XOPEN_SOURCE >= 500) &&
! (_POSIX_C_SOURCE >= 200112L)
glibc 2.12๋ถ€ํ„ฐ 2.19๊นŒ์ง€:
_BSD_SOURCE || _SVID_SOURCE ||
(_XOPEN_SOURCE >= 500) &&
! (_POSIX_C_SOURCE >= 200112L)
glibc 2.12 ์ „:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

DESCRIPTION

brk()์™€ sbrk()๋Š” ํ”„๋กœ๊ทธ๋žจ ๋‹จ์ ˆ์ (program break)์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋‹จ์ ˆ์ ์€ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ ๋์„ ๊ทœ์ •ํ•œ๋‹ค. (์ฆ‰, ํ”„๋กœ๊ทธ๋žจ ๋‹จ์ ˆ์ ์€ ๋น„์ดˆ๊ธฐํ™” ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ๋ ๋‹ค์Œ์˜ ์ฒซ ์œ„์น˜์ด๋‹ค.) ํ”„๋กœ๊ทธ๋žจ ๋‹จ์ ˆ์ ์„ ์˜ฌ๋ฆฌ๋ฉด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๊ณ  ๋‹จ์ ˆ์ ์„ ๋‚ด๋ฆฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

brk()๋Š” ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ๋์„ addr์— ์ง€์ •ํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹จ, ๊ทธ ๊ฐ’์ด ์ ๋‹นํ•˜๊ณ , ์‹œ์Šคํ…œ์— ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๊ณ , ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๊ธฐ ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ(setrlimit(2) ์ฐธ๊ณ )๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

sbrk()๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ increment ๋ฐ”์ดํŠธ๋งŒํผ ์˜ฌ๋ฆฐ๋‹ค. increment๋ฅผ 0์œผ๋กœ ํ•ด์„œ sbrk()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ๋‹จ์ ˆ์ ์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ brk()๋Š” 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ errno๋ฅผ ENOMEM์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

์„ฑ๊ณต ์‹œ sbrk()๋Š” ์ด์ „ ํ”„๋กœ๊ทธ๋žจ ๋‹จ์ ˆ์ ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๋‹จ์ ˆ์ ์ด ์ฆ๊ฐ€ํ–ˆ๋‹ค๋ฉด ์ด ๊ฐ’์€ ์ƒˆ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์ž‘์ ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๋‹ค.) ์˜ค๋ฅ˜ ์‹œ (void *) -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ errno๋ฅผ ENOMEM์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

CONFORMING TO

4.3BSD, SUSv1. SUSv2์—์„œ LEGACY๋กœ ํ‘œ์‹œ๋จ. POSIX.1-2001์—์„œ ์ œ๊ฑฐ๋จ.

NOTES

brk()์™€ sbrk() ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ. malloc(3) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํŒจํ‚ค์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ์ด์‹์„ฑ ์žˆ๊ณ  ํŽธ๋ฆฌํ•œ ๋ฐฉ์‹์ด๋‹ค.

์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ๋“ค์—์„œ sbrk() ์ธ์ž์— ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ์“ด๋‹ค. ํ”ํ•˜๊ฒŒ๋Š” int, ssize_t, ptrdiff_t, intptr_t๊ฐ€ ์žˆ๋‹ค.

C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/์ปค๋„ ์ฐจ์ด

์œ„์—์„œ ๊ธฐ์ˆ ํ•œ brk() ๋ฐ˜ํ™˜ ๊ฐ’์€ ๋ฆฌ๋ˆ…์Šค brk() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์œ„ํ•œ glibc ๋ž˜ํผ ํ•จ์ˆ˜๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋™์ž‘ ๋ฐฉ์‹์ด๋‹ค. (๋‹ค๋ฅธ ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌํ˜„์—์„œ๋„ brk() ๋ฐ˜ํ™˜ ๊ฐ’์ด ๊ทธ์™€ ๊ฐ™๋‹ค. ์ด ๋ฐ˜ํ™˜ ๊ฐ’์ด SUSv2์— ๋ช…์„ธ๋˜๊ธฐ๋„ ํ–ˆ๋‹ค.) ํ•˜์ง€๋งŒ ์‹ค์ œ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ์„ฑ๊ณต ์‹œ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ ๋‹จ์ ˆ์ ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹คํŒจ ์‹œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ํ˜„์žฌ ๋‹จ์ ˆ์ ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. glibc ๋ž˜ํผ ํ•จ์ˆ˜์—์„œ ์•ฝ๊ฐ„์˜ ์ž‘์—…์„ ํ•ด์„œ (์ฆ‰ ์ƒˆ ๋‹จ์ ˆ์ ์ด addr๋ณด๋‹ค ์ž‘์€์ง€ ํ™•์ธํ•ด์„œ) ์œ„์— ๊ธฐ์ˆ ํ•œ 0๊ณผ -1 ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ œ๊ณตํ•œ๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ sbrk()๋Š” brk() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ค ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•ด์„œ ์ด์ „ ๋‹จ์ ˆ์  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

SEE ALSO

execve(2), getrlimit(2), end(3), malloc(3)


2016-03-15

โš ๏ธ **GitHub.com Fallback** โš ๏ธ