GETRLIMIT

Section: System Calls (2)
索引 jman

BSD mandoc
 

索引

名称

getrlimit setrlimit - 最大システムリソース消費を制御する  

索引

ライブラリ

Lb libc  

索引

書式

In sys/types.h In sys/time.h In sys/resource.h Ft int Fn getrlimit int resource struct rlimit *rlp Ft int Fn setrlimit int resource const struct rlimit *rlp  

索引

解説

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

Fa resource 引数は次のうちの 1 つです:

RLIMIT_AS
プロセスがマップすることを許可される仮想メモリ の最大量 (バイト単位)。
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_SBSIZE
このユーザが使用できるソケットバッファの最大サイズ (バイト単位)。 このサイズは、ユーザがいつでも保持できるネットワークメモリ量を 制限します。 したがって mbuf の使用量も制限されます。
RLIMIT_STACK
プロセスのスタックセグメントの最大サイズ (バイト数)。 これによって、 プログラムのスタックセグメントをどのくらい延長できるか定義できます。 スタック延長はシステムによって自動的に実行されます。

リソースリミットはソフトリミットおよびハードリミットとして指定されます。 ソフトリミットを越えた場合、プロセスはシグナルを受信する可能性があります (例えば、CPU 時間またはファイルサイズを越えた場合) が、 ハードリミットに到達する (またはリソースリミットを修正する) まで実行を継続することはできます。 Vt rlimit 構造体を使用してリソースのハードリミットとソフトリミットを指定できます。

struct rlimit {
        rlim_t  rlim_cur;       /* 現在の (ソフト) リミット */
        rlim_t  rlim_max;       /* rlim_cur の最大値 */
};

スーパユーザだけがリミットの最大値を大きくできます。 他のユーザは 0 から Fa rlim_max の範囲内で Fa rlim_cur を変更するか、または Fa rlim_max を下げられるだけです (撤回はできません)。

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

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

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

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

索引

戻り値

Rv -std  

索引

エラー

Fn getrlimit および Fn setrlimit システムコールは次の場合に失敗します:

Bq Er EFAULT
Fa rlp で指定したアドレスが不正です。
Bq Er EPERM
Fn setrlimit に指定されたリミットがリミットの最大値を上昇させようとしましたが、 呼び出し側はスーパユーザではありません。

 

索引

関連項目

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

索引

歴史

Fn getrlimit システムコールは BSD 4.2 ではじめて登場しました。


 

索引

Index

名称
ライブラリ
書式
解説
戻り値
エラー
関連項目
歴史

jman



Time: 07:06:30 GMT, January 12, 2009