日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
BRK(2) FreeBSD システムコールマニュアル BRK(2) 名称 brk, sbrk -- データセグメントのサイズを変更する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <unistd.h> int brk(const void *addr); void * sbrk(intptr_t incr); 解説 brk() と sbrk() 関数は、現代の仮想メモリ管理の出現の前の古いインタフェー スです。それらは、arm64 または riscv アーキテクチャに存在せず、推奨されま せん。mmap(2) インタフェースは、代わりにページを割り付けるために使用され るべきです。 brk() と sbrk() 関数は、プロセスのデータセグメントに割り付けられるメモリ の量を変更するために使用されます。それらは、``break'' の位置を移動するこ とによってこれを行います。ブレークは、プロセスの初期化されないデータセグ メントの終わりの後の最初のアドレスです (また、``BSS'' として知られていま す)。 brk() 関数は、ブレークを addr に設定します。 sbrk() 関数は、incr バイトによってブレークを起こし、したがって、少なくと も incr バイトの新しいメモリをデータセグメントの割り付けます。incr が負で あるなら、ブレークは、incr バイトずつ減されます。 注 カーネルによって管理される実際のプロセスデータのセグメントサイズは、ペー ジサイズの単位で増加するか、または縮小し、これらの関数は、整列されない値 にブレークを設定することを許可します (すなわち、それは、データセグメント の最後のページ内のあらゆるアドレスを指すことができます)。 プログラムのブレークの現在の値は、sbrk(0) を呼び出すことによって決定でき ます。また end(3) を参照してください。 getrlimit(2) システムコールは、データセグメントの最大の許容されているサイ ズを決定するために使用されます。``etext + rlim.rlim_max'' を越えるブレー クを設定することはできません、ここで、rlim.rlim_max 値は、 getrlimit(RLIMIT_DATA, &rlim) への呼び出しから返されます。(etext の定義に ついては、end(3) を参照してください)。 戻り値 関数 brk() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が 返され、グローバル変数 errno にエラーを示す値が設定されます。 sbrk() 関数は、成功するなら、以前のブレーク値を返します。そうでなければ、 値 (void *)-1 が返され、グローバル変数 errno は、エラーを示す値に設定され ます。 エラー brk() と sbrk() 関数は、次の場合に失敗します: [EINVAL] 要求されたブレーク値がデータセグメントの最初を越えまし た。 [ENOMEM] setrlimit(2) によって設定されるデータセグメントのサイ ズの制限が越えました。 [ENOMEM] データセグメントの拡張をサポートするためのスワップ領域 に存在する空間が不足しています。 関連項目 execve(2), getrlimit(2), mmap(2), end(3), free(3), malloc(3) 歴史 brk() 関数は、Version 7 AT&T UNIX で登場しました。FreeBSD 11.0 は、brk() または sbrk() をサポートしない arm64 と riscv アーキテクチャを導入しまし た。 バグ malloc(3), free(3) または同様な関数と brk() または sbrk() を混合すること は、移植性のないプログラムの振る舞いの結果となります。 ブレークを設定することは、スワップ空間の一時的な不足のため失敗するかもし れません。これは、getrlimit(2) で調べずにデータセグメントの最大のサイズを 越えることによって起こされる失敗と区別することができません。 sbrk() は、0 の引数で呼び出すことによってヒープ (heap) を監視するために、 時々使用されます。結果は、mmap(2) 基づいた malloc と組み合わせて実際の利 用を反映することはありそうもありません。 brk() と sbrk() は、スレッドセーフではありません。 FreeBSD 12.1 June 2, 2018 FreeBSD 12.1