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
として定義されます。
この情報はプロセスごとの情報に保存されるので、
シェルが将来作成するすべてのプロセスに
このシステムコールが影響を及ぼすためには、
このシステムコールをシェルが直接実行する必要があります。
このため
limit
は
csh(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
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- 戻り値
-
- エラー
-
- 関連項目
-
- 歴史
-
Time: 07:06:30 GMT, January 12, 2009