brk - システムコールの説明 - Linux コマンド集 一覧表
名前
brk, sbrk - データ・セグメントのサイズの変更する
書式
#include <unistd.h>
int brk(void *
end_data_segment
);
void *sbrk(intptr_t
increment
);
説明
brk
()は、データ・セグメント (data segment) の最後を
end_data_segment
で指定した値に設定する。
システムが十分なメモリを持ち、
プロセスのデータサイズの最大値を超えていなれば、その値は有効である。
(
setrlimit
(2)を参照)。
sbrk
()は、プログラムのデータ空間を
increment
バイトだけ増やす。
sbrk
()は、システム・コールではなく、C ライブラリにあるラッパー (wrapper) である。
sbrk
()は increment を 0 にして呼び出すことにより、
プログラムの現在のブレーク (break) を知るために使用できる。
返り値
成功した場合、 brk ()は 0 を返し、 sbrk ()は新しい領域の先頭へのポインタを返す。 エラーの場合には、 -1 を返し、 errno に ENOMEM を設定する。
準拠
4.3BSD, SUSv1.
SUSv2 では「過去の名残 (LEGACY)」と位置付けられており、
POSIX.1-2001 で削除された。
brk
()と
sbrk
()は C 規格 (C Standard) には定義されていない。
また POSIX.1 規格からは意図的に除外されている (段落 B.1.1.1.3, B.8.3.3 参照)。
注意
いろいろなシステムにおいて、 sbrk ()の引き数に様々な型が使われている。 一般的なのは int , ssize_t , ptrdiff_t , intptr_t である。