スポンサーリンク

VLIMIT(3) FreeBSD ライブラリ関数マニュアル VLIMIT(3)

名称

vlimit − システムリソース消費の最大値を制御

書式

#include <sys/vlimit.h>

vlimit(resource, value);

解説

このインタフェースは、getrlimit(2) によって置き換えられました。この関数 は、互換性ライブラリ、libcompat から使用できます。

現在のプロセスおよびそれが作成する各プロセスによる個別の消費量が、指定さ れた resource について value を超えないように制限します。 value が −1 に 指定されている場合は、現在の限界値が返され、限界値は変更されません。現在 のところ制御可能なリソースは次の通りです。

       LIM_NORAISE

擬似限界値。非ゼロの値に設定しても、限界値は引き上げられない 場合があります。 noraise 制限を削除することができるのは、 スーパユーザのみです。

LIM_CPU
各プロセスが使用する cpu 秒の最大数。

LIM_FSIZE
作成できる最大の単一ファイル。

LIM_DATA
sbrk(2) による data+stack 領域のプログラムテキストの終わりを 超えた最大成長度。

LIM_STACK
自動的に拡張されたスタック領域の最大サイズ。

LIM_CORE
作成される最大のコアダンプのサイズ。

LIM_MAXRSS
プログラムに割り当てられる物理的メモリ量(バイト)のソフト限界 値。メモリが不足する場合は、システムは宣言した LIM_MAXRSS を 超えているプロセスからメモリを取り上げます。

この情報はプロセス毎の情報に保存されているので、このシステムコールをシェ ルにより将来作成されるすべてのプロセスに対して有効にするためには、シェル によって直接実行する必要があります。従って、 limit は csh(1) の組み込みコ マンドです。

通常のやり方では制限値を超えてしまう場合は、システムはデータまたはスタッ クスペースの拡張を拒否します。データスペース制限値に達した場合に brk(2) コールが失敗したり、スタック制限値に達した場合はそのプロセスは中止されま す(スタックを拡張できないので、シグナルを送る方法がありません!)。

大きすぎるファイルを作成するようなファイル I/O 操作を行うと、シグナル SIGXFSZ が生成されますが、これは通常はプロセスを終了させますが、捕捉でき る場合もあります。 cpu 時間の制限値を超えた場合は、シグナル SIGXFSZ が違 反しているプロセスに送られます。そのシグナルを処理する時間を許すために、 CPU 時間制限値を上げることにより 5 秒間の猶予がプロセスに与えられます。

参照

csh(1)

歴史

vlimit() 関数は、 4.2BSD に現れました。

バグ

LIM_NORAISE はもはや存在しません。

この関数は、未だに再実装されていません。

4th Berkeley Distribution June 4, 1993 4th Berkeley Distribution

スポンサーリンク