setrlimit(2) FreeBSD 一般コマンドマニュアル

setrlimit

前のページ 上に戻る 次のページ

setrlimit




書式

     #include <sys/types.h>
     #include <sys/time.h>
     #include <sys/resource.h>

     int
     getrlimit(int resource, struct rlimit *rlp);

     int
     setrlimit(int resource, const struct rlimit *rlp);


解説

     現在のプロセス、およびそれが作成する各プロセスによるシステムリソースの消
     費限度は、 getrlimit() 呼び出しで取得することができ、 setrlimit() 呼び出
     しで設定できます。

     resource パラメータは次のうちの 1 つです。

     RLIMIT_CORE     作成できる core(5) ファイルの最大サイズ (バイト単位)

     RLIMIT_CPU      各プロセスが使用する CPU 時間の最大量 (秒単位)

     RLIMIT_DATA     プロセス用のデータセグメントの最大サイズ (バイト単位)。こ
                     れは、プログラムがそのブレークを sbrk(2) システムコールで
                     どのくらい遠くまで延長できるかを定義します。

     RLIMIT_FSIZE    作成できるファイルの最大サイズ (バイト単位)

     RLIMIT_MEMLOCK  プロセスが mlock(2) 関数を使用して、プロセスをメモリに
                     ロックできる最大サイズ (バイト単位)。

     RLIMIT_NOFILE   このプロセスが開けるファイルの最大数

     RLIMIT_NPROC    このユーザ ID が同時に利用できるプロセスの最大数

     RLIMIT_RSS      増加させて良いプロセスの常駐セットサイズの最大サイズ (バ
                     イト単位)。これはプロセスに与えられる物理メモリの量に制限
                     を課します。メモリが逼迫してシステムがメモリを回収する際
                     に、宣言された常駐セットサイズを越えるプロセスを回収対象
                     として選択します。

     RLIMIT_STACK    プロセスのスタックセグメントの最大サイズ (バイト数)。これ
                     によって、プログラムのスタックセグメントをどのくらい延長
                     できるか定義できます。スタック延長はシステムによって自動
                     的に実行されます。

     RLIMIT_SBSIZE   このユーザが使用できるソケットバッファの最大サイズ (バイ
                     ト単位)。このサイズは、ユーザがいつでも保持できるネットワ
                     ークメモリ量を制限しますので、したがって mbuf の使用量も
                     制限します。

     けです (撤回はできません)。

     リミットを ``無制限'' にする値は RLIM_INFINITY として定義されます。

     この情報はプロセスごとの情報に保存されるので、シェルが将来作成するすべて
     のプロセスにこのシステムコールが影響を及ぼすためには、このシステムコール
     をシェルが直接実行する必要があります。このため limitcsh(1) の組み込み
     コマンドになっているのです。

     システムは、通常の方法でリミットを超えようとするときに、データまたはス
     タック空間を延長することを拒絶します。データ空間リミットに到達すると
     brk(2) 呼び出しは処理に失敗します。スタックリミットに到達すると、プロセス
     はセグメント例外 (SIGSEGV) を受信します。シグナルスタックを使用するハンド
     ラによってこのシグナルが捕捉されない場合、このシグナルはプロセスを抹消し
     ます。

     プロセスのソフトリミットより大きなファイルを作成するファイルの入出力操作
     をすると書込みは失敗し、シグナル SIGXFSZ が生成されます。通常、これによっ
     てプロセスは終了しますが、捕捉することもできます。 CPU 時間のソフトリミッ
     トを越えたとき、シグナル SIGXCPU が障害を起こしているプロセスに送信されま
     す。


戻り値

     成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、
     グローバル変数 errno が設定されてエラーを示します。


エラー

     getrlimit() および setrlimit() は次の場合に失敗します。

     [EFAULT]           rlp で指定したアドレスが不正です。

     [EPERM]            setrlimit() に指定されたリミットがリミットの最大値を上
                        昇させようとしましたが、呼び出し側はスーパユーザではあ
                        りません。


関連項目

     csh(1), quota(1), quotactl(2), sigaltstack(2), sigvec(2), sysctl(3)


歴史

     getrlimit() 関数は 4.2BSD ではじめて登場しました。

FreeBSD 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス