標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <sys/resource.h>
int setrlimit(int resource, const struct rlimit *rlp);
setrlimit() 関数は、呼び出しプロセスにリソース限界を設定します。リソース限界は、値の対です。1 つは現行 (ソフト) 限界を指定するもので、他の 1 つは最大 (ハード) 限界を指定します。
ソフト限界は、ハード限界より小さいか等しい任意の値に変更することが できます。一定の resource 値、(RLIMIT_CPU、RLIMIT_NOFILE、RLIMIT_AS) の 場合には、ソフト限界は、既存の使用より低く設定することはできません。
ハード限界は、ソフト限界より大きいか等しい任意の値 に対し低く設定される場合があります。ハード限界を上げることができるのは、スーパーユーザー権限のある プロセスだけです。 ソフト限界とハード限界は、両方とも setrlimit() への 1 回の呼び出しで変更できます。
<sys/resource.h> で定義された値 RLIM_INFINITY は、他のどの限界値より大きいと見なされます。getrlimit() への呼び出しにより リソースの RLIM_INFINITY が戻される場合には、インプリメンテーションでそのリソースの限界が実施されない ことを意味しています。RLIM_INFINITY を、setrlimit() への正常呼び出し のリソース限界値として指定すると、そのリソース限界の実施が禁止されます。
詳細は、<sys/resource.h> ヘッダーの説明を参照してください。
リソース限界値は、exec および fork に伝えられます。
z/OSUNIX サービスの特殊な動作: 例外は、デーモン・サポートを受けて exec 処理を行うときのために存在します。 デーモン・プロセスが exec を呼び出し、それが以前に exec に対して setuid() を呼び出していた場合、RLIMIT_CPU、RLIMIT_AS、RLIMIT_CORE、RLIMIT_FSIZE、および RLIMIT_NOFILE 制限値は、カーネル parmlib メンバー BPXPRMxx 内で指 定された制限値を基に設定されます。
アドレス・スペース内の唯一のプロセス以外のプロセスの場合には 、RLIMIT_CPU および RLIMIT_AS 限界が、アドレス・スペース内のすべてのプロセスと共用されます。RLIMIT_CPU の場合、ソフト限界を超えると、アドレス・スペース内の最初のプロセスで処置がとられます。処置が終了すると、アドレス・スペース内のすべてのプロセスが終了します。
RLIMIT_CORE 限界値に加えて、ダンプ・ファイル・デフォルト値 には SYSMDUMP デフォルト値が設定されます。IEADMR00 parmlib メンバーを利用した SYSMDUMP デフォルトの設定については、「z/OS MVS 初期設定およびチューニング 解説書 」を参照してください。
メモリー・ダンプの増分単位は、4160 バイトです。したがって、RLIMIT_CORE 値は、メモリー・ダンプのサイズに 4160 バイトを増分単位とし て影響を与えます。例えば、RLIMIT_CORE ソフト限界値が 4000 の 場合には、ダンプにはデータが含まれません。RLIMIT_CORE ソフト限界値が 8000 の場合、メモリー・ダンプの最大サイズは 4160 バイトです。
RLIMIT_NOFILE の設定時には、ハード限界は、システム定義限界 の 524288 を超えられません。
z/OS UNIX の大規模ファイルのサポート: AMODE 64 C/C++ アプリケーションの場合は、z/OS UNIX の大規模ファイルが自動的にサポートされます。AMODE 31 C/C++ アプリケーションは、オプション LANGLVL(LONGLONG) を指定してコンパイルされなければなりません。また、ヘッダーがインクルードされる前に _LARGE_FILES フィーチャー・テスト・マクロを定義して、2 GB のサイズより大きい z/OS UNIX ファイルをこの関数が操作できるようにしなければなりません。ファイル・サイズとオフセット・フィールドは、63 ビットの幅に拡張されます。したがって、_LARGE_FILES フィーチャー・テスト・マクロの定義も行うには、ファイルを操作する他のいずれかの関数が必要です。
正常に実行された場合、setrlimit() は 0 を戻します。