総合手引 | セクション 2 | English | オプション |
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
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 時間またはファイルサイズを越えた場合) が、 ハードリミットに到達する (またはリソースリミットを修正する) まで実行を継続することはできます。 rlimit 構造体を使用してリソースのハードリミットとソフトリミットを指定できます。
struct rlimit { rlim_t rlim_cur; /* 現在の (ソフト) リミット */ rlim_t rlim_max; /* rlim_cur の最大値 */ };
スーパユーザだけがリミットの最大値を大きくできます。 他のユーザは 0 から rlim_max の範囲内で rlim_cur を変更するか、または rlim_max を下げられるだけです (撤回はできません)。
リミットを "無制限" にする値は RLIM_INFINITY として定義されます。
この情報はプロセスごとの情報に保存されるので、 シェルが将来作成するすべてのプロセスに このシステムコールが影響を及ぼすためには、 このシステムコールをシェルが直接実行する必要があります。 このため limit は csh(1) の組み込みコマンドになっているのです。
システムは、通常の方法でリミットを超えようとするときに、 データまたはスタック空間を延長することを拒絶します。 データ空間リミットに到達すると brk(2) 関数は処理に失敗します。 スタックリミットに到達すると、プロセスはセグメント例外 ( SIGSEGV) を受信します。 シグナルスタックを使用するハンドラによって このシグナルが捕捉されない場合、このシグナルはプロセスを抹消します。
プロセスのソフトリミットより大きなファイルを 作成するファイルの入出力操作をすると書込みは失敗し、シグナル SIGXFSZ が生成されます。 通常、これによってプロセスは終了しますが、捕捉することもできます。 CPU 時間のソフトリミットを越えたとき、シグナル SIGXCPU が障害を起こしているプロセスに送信されます。
[EFAULT] | |
rlp で指定したアドレスが不正です。 | |
[EPERM] | |
setrlimit() に指定されたリミットがリミットの最大値を上昇させようとしましたが、 呼び出し側はスーパユーザではありません。 | |
GETRLIMIT (2) | June 13, 2004 |
総合手引 | セクション 2 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Did you know that 7/5 people don't know how to use fractions? | ” |