kazmax - Linux で自宅サーバー

brk - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠
  6. 注意
  7. 関連項目

名前

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 を返し、 errnoENOMEM を設定する。

準拠

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 である。

関連項目