.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH GETRLIMIT 2 2014\-10\-02 Linux "Linux Programmer's Manual"
+.TH GETRLIMIT 2 2015\-01\-22 Linux "Linux Programmer's Manual"
.SH 名前
getrlimit, setrlimit, prlimit \- 資源の制限を取得/設定する
.SH 書式
.TP
\fBRLIMIT_AS\fP
.\" since 2.0.27 / 2.1.12
-プロセスの仮想メモリ (アドレス空間) の最大サイズ (バイト単位)。 この制限は \fBbrk\fP(2), \fBmmap\fP(2),
+プロセスの仮想メモリー (アドレス空間) の最大サイズ (バイト単位)。 この制限は \fBbrk\fP(2), \fBmmap\fP(2),
\fBmremap\fP(2) の呼び出しに影響し、この制限を超えた場合は エラー \fBENOMEM\fP で失敗する。 また自動的なスタック拡張にも失敗する
(さらに \fBsigaltstack\fP(2) を使った代替スタックを利用可能にしていなかった場合には、 \fBSIGSEGV\fP を生成してそのプロセスを
kill する)。 この値は \fIlong\fP 型なので、32 ビットの \fIlong\fP 型を持つマシンでは、 この制限は最大で 2 GiB
\fBRLIMIT_CPU\fP
CPU 時間の上限 (秒数)。プロセスがソフトリミットに達した場合に、
\fBSIGXCPU\fP シグナルを送る。このシグナルに対するデフォルトの動作は、
-プロセスの終了である。ただし、シグナルをキャッチして、ハンドラがメイン
+ã\83\97ã\83ã\82»ã\82¹ã\81®çµ\82äº\86ã\81§ã\81\82ã\82\8bã\80\82ã\81\9fã\81 ã\81\97ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\82\92ã\82ã\83£ã\83\83ã\83\81ã\81\97ã\81¦ã\80\81ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cã\83¡ã\82¤ã\83³
プログラムに制御を返すこともできる。プロセスが CPU 時間を使い続けた
場合は、ハードリミットに達するまで 1 秒毎にプロセスに \fBSIGXCPU\fP を送り、
ハードリミットに達すると \fBSIGKILL\fP を送る。
このプロセスが実行できる \fBflock\fP(2) ロック数と \fBfcntl\fP(2) リース数の合計値を制限する。
.TP
\fBRLIMIT_MEMLOCK\fP
-RAM 内にロックできるメモリの最大バイト数。 実際には、この制限はシステムページサイズの最も近い倍数に 切り捨てて丸められる。 この制限は
+RAM å\86\85ã\81«ã\83ã\83\83ã\82¯ã\81§ã\81\8dã\82\8bã\83¡ã\83¢ã\83ªã\83¼ã\81®æ\9c\80大ã\83\90ã\82¤ã\83\88æ\95°ã\80\82 å®\9fé\9a\9bã\81«ã\81¯ã\80\81ã\81\93ã\81®å\88¶é\99\90ã\81¯ã\82·ã\82¹ã\83\86ã\83 ã\83\9aã\83¼ã\82¸ã\82µã\82¤ã\82ºã\81®æ\9c\80ã\82\82è¿\91ã\81\84å\80\8dæ\95°ã\81« å\88\87ã\82\8aæ\8d¨ã\81¦ã\81¦ä¸¸ã\82\81ã\82\89ã\82\8cã\82\8bã\80\82 ã\81\93ã\81®å\88¶é\99\90ã\81¯
\fBmlock\fP(2), \fBmlockall\fP(2), \fBmmap\fP(2) の \fBMAP_LOCKED\fP 操作に影響する。 Linux
2.6.9 以降では \fBshmctl\fP(2) \fBSHM_LOCK\fP 操作にも影響する。 この操作は呼び出し元プロセスの実 (real) ユーザー
-ID にロックされる 共有メモリセグメント (\fBshmget\fP(2) を参照) の合計バイト数の最大値を設定する。 \fBshmctl\fP(2)
+ID ã\81«ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\82\8b å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\82»ã\82°ã\83¡ã\83³ã\83\88 (\fBshmget\fP(2) ã\82\92å\8f\82ç\85§) ã\81®å\90\88è¨\88ã\83\90ã\82¤ã\83\88æ\95°ã\81®æ\9c\80大å\80¤ã\82\92è¨å®\9aã\81\99ã\82\8bã\80\82 \fBshmctl\fP(2)
\fBSHM_LOCK\fP によるロックは、 \fBmlock\fP(2), \fBmlockall\fP(2), \fBmmap\fP(2) の
-\fBMAP_LOCKED\fP によって確立されるプロセス毎のメモリロックとは分けて数える。 1 つのプロセスはこの制限までのバイトをロックできる。
+\fBMAP_LOCKED\fP ã\81«ã\82\88ã\81£ã\81¦ç¢ºç«\8bã\81\95ã\82\8cã\82\8bã\83\97ã\83ã\82»ã\82¹æ¯\8eã\81®ã\83¡ã\83¢ã\83ªã\83¼ã\83ã\83\83ã\82¯ã\81¨ã\81¯å\88\86ã\81\91ã\81¦æ\95°ã\81\88ã\82\8bã\80\82 1 ã\81¤ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81¯ã\81\93ã\81®å\88¶é\99\90ã\81¾ã\81§ã\81®ã\83\90ã\82¤ã\83\88ã\82\92ã\83ã\83\83ã\82¯ã\81§ã\81\8dã\82\8bã\80\82
この制限には 2 つの種類がある。 2.6.9 より前の Linux カーネル では、
-この制限は特権プロセスによってロックされるメモリの合計を制御していた。 Linux 2.6.9
-以é\99\8dã\81§ã\81¯ã\80\81ç\89¹æ¨©ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\83ã\83\83ã\82¯ã\81\99ã\82\8bã\83¡ã\83¢ã\83ªã\81®å\90\88è¨\88ã\81«å\88¶é\99\90ã\81¯ã\81ªã\81\8fã\80\81 代ã\82\8fã\82\8aã\81«ã\81\93ã\81®å\88¶é\99\90ã\81¯é\9d\9eç\89¹æ¨©ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\83ã\83\83ã\82¯ã\81\99ã\82\8bã\83¡ã\83¢ã\83ªの合計に 適用されるようになった。
+ã\81\93ã\81®å\88¶é\99\90ã\81¯ç\89¹æ¨©ã\83\97ã\83ã\82»ã\82¹ã\81«ã\82\88ã\81£ã\81¦ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\82\8bã\83¡ã\83¢ã\83ªã\83¼ã\81®å\90\88è¨\88ã\82\92å\88¶å¾¡ã\81\97ã\81¦ã\81\84ã\81\9fã\80\82 Linux 2.6.9
+以é\99\8dã\81§ã\81¯ã\80\81ç\89¹æ¨©ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\83ã\83\83ã\82¯ã\81\99ã\82\8bã\83¡ã\83¢ã\83ªã\83¼ã\81®å\90\88è¨\88ã\81«å\88¶é\99\90ã\81¯ã\81ªã\81\8fã\80\81 代ã\82\8fã\82\8aã\81«ã\81\93ã\81®å\88¶é\99\90ã\81¯é\9d\9eç\89¹æ¨©ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\83ã\83\83ã\82¯ã\81\99ã\82\8bã\83¡ã\83¢ã\83ªã\83¼の合計に 適用されるようになった。
.TP
\fBRLIMIT_MSGQUEUE\fP (Linux 2.6.8 以降)
呼び出し元プロセスの実ユーザー ID に対して、 POSIX メッセージキューのために確保できるバイト数の制限を指定する。 この制限は
-\fBmq_open\fP(3) に対して適用される。 ユーザが作成した各々のメッセージキューのバイト数は
+\fBmq_open\fP(3) ã\81«å¯¾ã\81\97ã\81¦é\81©ç\94¨ã\81\95ã\82\8cã\82\8bã\80\82 ã\83¦ã\83¼ã\82¶ã\83¼ã\81\8cä½\9cæ\88\90ã\81\97ã\81\9få\90\84ã\80\85ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82ã\83¥ã\83¼ã\81®ã\83\90ã\82¤ã\83\88æ\95°ã\81¯
以下の式により計算され、(そのキューが削除されるまでの間) この制限の計算対象に含められる。
.nf
\fImsg_msg\fP と \fIposix_msg_tree_node\fP はカーネル内部の構造体である。
上記の式での「オーバーヘッド」加算分は、実装において必要となるオーバーヘッドを考慮したものである。 また、これにより、ユーザーが長さ 0
-のメッセージを無制限に作れないことが保証される (このようなメッセージであっても、 記録のためのオーバーヘッドでシステムメモリを消費する)。
+ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ç\84¡å\88¶é\99\90ã\81«ä½\9cã\82\8cã\81ªã\81\84ã\81\93ã\81¨ã\81\8cä¿\9d証ã\81\95ã\82\8cã\82\8b (ã\81\93ã\81®ã\82\88ã\81\86ã\81ªã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81§ã\81\82ã\81£ã\81¦ã\82\82ã\80\81 è¨\98é\8c²ã\81®ã\81\9fã\82\81ã\81®ã\82ªã\83¼ã\83\90ã\83¼ã\83\98ã\83\83ã\83\89ã\81§ã\82·ã\82¹ã\83\86ã\83 ã\83¡ã\83¢ã\83ªã\83¼ã\82\92æ¶\88è²»ã\81\99ã\82\8b)ã\80\82
.TP
\fBRLIMIT_NICE\fP (Linux 2.6.12 以降, 下記の「バグ」の節も参照)
\fBsetpriority\fP(2) や \fBnice\fP(2) を使って引き上げられるプロセスの nice 値の上限を指定する。 nice
発生する。通常、負の値は特別な意味を持っているからである。 例えば、通常は \fBRLIM_INFINITY\fP の値は \-1 である)。
.TP
\fBRLIMIT_NOFILE\fP
-このプロセスがオープンできるファイルディスクリプタ数の最大値より 1 大きい値を指定する。 (\fBopen\fP(2), \fBpipe\fP(2),
+このプロセスがオープンできるファイルディスクリプター数の最大値より 1 大きい値を指定する。 (\fBopen\fP(2), \fBpipe\fP(2),
\fBdup\fP(2) などにより) この上限を超えようとした場合、エラー \fBEMFILE\fP が発生する (歴史的に、BSD ではこの上限は
\fBRLIMIT_OFILE\fP という名前となっている)。
.TP
.\" "Inconsistent credential checking in prlimit() syscall"
\fIpid\fP 引き数は呼び出しの操作対象となるプロセス ID を指定する。 \fIpid\fP が 0
の場合、呼び出しは呼び出し元プロセスに対して適用される。 自分以外のプロセスのリソースの設定と取得を行うためには、 呼び出し元プロセスが
-\fBCAP_SYS_RESOURCE\fP ケーパビリティを持っているか、 対象となるプロセスの実ユーザ ID、 実効ユーザ ID、 保存
-set\-user\-ID が呼び出し元プロセスの実ユーザ ID と一致し、 かつ、 対象となるプロセスの実グループ ID、 実効グループ ID、 保存
+\fBCAP_SYS_RESOURCE\fP ケーパビリティを持っているか、 対象となるプロセスの実ユーザー ID、 実効ユーザー ID、 保存
+set\-user\-ID が呼び出し元プロセスの実ユーザー ID と一致し、 かつ、 対象となるプロセスの実グループ ID、 実効グループ ID、 保存
set\-group\-ID が呼び出し元プロセスの実グループ ID と一致していなければならない。
.SH 返り値
成功した場合、これらのシステムコールは 0 を返す。
.SH エラー
.TP
\fBEFAULT\fP
-場所を指すポインタ引き数がアクセス可能なアドレス空間外を指している。
+場所を指すポインター引き数がアクセス可能なアドレス空間外を指している。
.TP
\fBEINVAL\fP
\fIresource\fP で指定された値が有効でない。
\fIrlim\->rlim_cur\fP が \fIrlim\->rlim_max\fP よりも大きかった。
.TP
\fBEPERM\fP
-特権のないプロセスがハードリミットを上げようとした。
-これを行うためには \fBCAP_SYS_RESOURCE\fP ケーパビリティが必要である。
-または、特権のないプロセスが \fBRLIMIT_NOFILE\fP ハードリミットを
-現在のカーネルの最大値 (\fBNR_OPEN\fP) 以上に増やそうとした。
-または、呼び出したプロセスが \fIpid\fP で指定されたプロセスのリミットを
-設定する許可を持っていなかった。
+非特権プロセスがハードリミットを増やそうとした。 この操作には \fBCAP_SYS_RESOURCE\fP ケーパビリティが必要である。
+.TP
+\fBEPERM\fP
+呼び出し元がハードリミット \fBRLIMIT_NOFILE\fP を \fI/proc/sys/fs/nr_open\fP (\fBproc\fP(5) 参照)
+で定義される最大値より大きな値に増やそうとした。
+.TP
+\fBEPERM\fP
+(\fBprlimit\fP()) 呼び出し元のプロセスが \fIpid\fP で指定されたプロセスの上限を設定する許可を持っていなかった。
.TP
\fBESRCH\fP
\fIpid\fP で指定された ID のプロセスが見つからなかった。
.\" Tested Solaris 10, FreeBSD 9, OpenBSD 5.0
.\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=50951
Linux 2.6.12 以降では、 プロセスがその \fBRLIMIT_CPU\fP ソフトリミットに達し、 \fBSIGXCPU\fP
-ã\81«å¯¾ã\81\97ã\81¦ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81\8cè¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81 ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©を起動するだけでなく、 カーネルは 1 秒間ソフトリミットを増やす。 そのプロセスが
+ã\81«å¯¾ã\81\97ã\81¦ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cè¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81 ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼を起動するだけでなく、 カーネルは 1 秒間ソフトリミットを増やす。 そのプロセスが
CPU 時間を消費し続けている限り、 ハードリミットに達するまで、この動作が繰り返される。 ハードリミットに達すると、その時点でプロセスは kill
される。 他の実装では、上記のような \fBRLIMIT_CPU\fP ソフトリミットの変更は行われず、 おそらく Linux の動作は標準に準拠していない。
移植性が必要なアプリケーションではこの Linux 固有の動作を前提にするのは避けるべきである。 Linux 固有の上限
\fBshmctl\fP(2), \fBmalloc\fP(3), \fBsigqueue\fP(3), \fBulimit\fP(3), \fBcore\fP(5),
\fBcapabilities\fP(7), \fBsignal\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.77 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。