VLIMIT(3C) — NEWS-OS Programmer’s Manual
名称
vlimit − システムのリソース消費量の最大値を制御する
形式
#include <sys/vlimit.h>
vlimit(resource, value)
解説
現在、この機能を実現するためには getrlimit(2) が使われています。
現在のプロセスおよびそれが生成する各プロセスによるリソース消費量を 制限し、 指定された resource 上の value を それぞれ超えないようにします。 value が −1 と指定されている場合、 現在の制限値が返され、 制限値は変更されません。 現在制御可能なリソースは次のとおりです。
LIM_NORAISE
仮想制限値。 0 以外に設定されている場合、 制限値を 増加させることはできません。 noraise の制限は、 スーパーユーザだけが解除できます。
LIM_CPU 各プロセスが使用する cpu 秒の最大数
LIM_FSIZE 生成できる最大単一ファイル
LIM_DATA sbrk(2) により、 プログラムテキストの最後を 超えて増加するデータ+スタックの範囲の最大値
LIM_STACK 自動拡張されるスタックの範囲の最大値
LIM_CORE 生成されるコアダンプの最大値
LIM_MAXRSS プログラムに与えられる物理メモリのソフトでの限界値(バイト単位)。 メモリが不足気味のとき、 システムは、 宣言された LIM_MAXRSS を 超えるプロセスからメモリを 確保しようと試みます。
この情報はプロセス情報毎に格納されるため、 このシステム呼び出しが、 将来シェルの生成するプロセスに影響を 与える場合、 直接シェルによって実行されなければなりません。 従って、 limit は、 csh(1) の組み込みコマンドです。
通常の方法では制限値を 超えると思われる場合、 システムは、 データまたはスタック領域の拡張を 拒否します。 データ領域の制限値に達した場合、 または、 スタックの制限値に達したときにプロセスが強制終了された場合(スタックを 拡張できないため、 シグナルを 送る方法がない)、 break の呼び出しは失敗します。
大きすぎるファイルを 生成する可能性のあるファイル入出力動作は、 シグナル SIGXFSZ を 生成します。 通常、 これはプロセスを 終了させますが、 捕獲することも可能です。 cpu 時間の制限値を 超えた場合は、 その弊を 起こしたプロセスに SIGXCPU が送られます。 cpu 時間リミットを 掲げることで 5秒の猶予が与えられ、 シグナルの処理が許されます。
関連事項
バグ
LIM_NORAISE は、 現在では存在しません。
NEWS-OSRelease 4.1C