OSDN Git Service

(split) LDP: Update draft and release (from the previous commit)
[linuxjm/LDP_man-pages.git] / release / man2 / getrlimit.2
index 30d184f..b369d1c 100644 (file)
@@ -1,8 +1,7 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" Copyright (c) 1992 Drew Eckhardt, March 28, 1992
-.\" and Copyright (c) 2002, 2004, 2005, 2008 Michael Kerrisk
+.\" and Copyright (c) 2002, 2004, 2005, 2008, 2010 Michael Kerrisk
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -22,6 +21,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" Modified by Michael Haardt <michael@moria.de>
 .\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
 .\"          Robert Bihlmeyer <robbe@orcus.ping.at>
 .\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
 .\" Modified 2001-05-04 by aeb, following a remark by
-.\"          Havard Lygre <hklygre@online.no>
+.\"          Håvard Lygre <hklygre@online.no>
 .\" Modified 2001-04-17 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\" Modified 2002-06-13 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\"     Added note on nonstandard behavior when SIGCHLD is ignored.
 .\" Modified 2002-07-09 by Michael Kerrisk <mtk.manpages@gmail.com>
-.\"    Enhanced descriptions of 'resource' values for [gs]etrlimit()
+.\"    Enhanced descriptions of 'resource' values
 .\" Modified 2003-11-28 by aeb, added RLIMIT_CORE
 .\" Modified 2004-03-26 by aeb, added RLIMIT_AS
 .\" Modified 2004-06-16 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\" 2005-07-13, mtk, documented RLIMIT_MSGQUEUE limit.
 .\" 2005-07-28, mtk, Added descriptions of RLIMIT_NICE and RLIMIT_RTPRIO
 .\" 2008-05-07, mtk / Peter Zijlstra, Added description of RLIMIT_RTTIME
+.\" 2010-11-06, mtk: Added documentation of prlimit()
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\"
 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
 .\"         all rights reserved.
 .\" Updated and Modified 2006-04-15, Akihiro MOTOKI, Catch up to LDP v2.29
 .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
 .\" Updated 2008-10-13, Akihiro MOTOKI, LDP v3.11
+.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.\"WORD:       resource                »ñ¸»
-.\"WORD:       limit                   À©¸Â
-.\"
-.TH GETRLIMIT 2 2010-09-26 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-getrlimit, setrlimit \- »ñ¸»¤ÎÀ©¸Â¤ò¼èÆÀ/ÀßÄꤹ¤ë
-.SH ½ñ¼°
-.B #include <sys/time.h>
+.TH GETRLIMIT 2 2014\-01\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+getrlimit, setrlimit, prlimit \- 資源の制限を取得/設定する
+.SH 書式
+\fB#include <sys/time.h>\fP
+.br
+\fB#include <sys/resource.h>\fP
+.sp
+\fBint getrlimit(int \fP\fIresource\fP\fB, struct rlimit *\fP\fIrlim\fP\fB);\fP
 .br
-.B #include <sys/resource.h>
+\fBint setrlimit(int \fP\fIresource\fP\fB, const struct rlimit *\fP\fIrlim\fP\fB);\fP
 .sp
-.BI "int getrlimit(int " resource ", struct rlimit *" rlim );
+\fBint prlimit(pid_t \fP\fIpid\fP\fB, int \fP\fIresource\fP\fB, const struct rlimit
+*\fP\fInew_limit\fP\fB,\fP
 .br
-.BI "int setrlimit(int " resource ", const struct rlimit *" rlim );
-.SH ÀâÌÀ
-.BR getrlimit ()
-¤È
-.BR setrlimit ()
-¤Ï¤½¤ì¤¾¤ì»ñ¸» (resource) ¤ÎÀ©¸Â (limit) ¤ÎÀßÄê¤È¼èÆÀ¤ò¹Ô¤¦¡£
-³Æ¥ê¥½¡¼¥¹¤Ë¤Ï¡¢¤½¤ì¤ËÂбþ¤¹¤ë¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤È¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤¬¤¢¤ë¡£
-¥ê¥ß¥Ã¥È¤Ï
-.RB ( getrlimit ()
-¤È
-.BR setrlimit ()
-¤Î
-.I rlim
-°ú¤­¿ô¤Ç¤¢¤ë)
-.I rlimit
-¹½Â¤ÂΤÇÄêµÁ¤µ¤ì¤ë:
+\fB struct rlimit *\fP\fIold_limit\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBprlimit\fP(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64
+.SH 説明
+\fBgetrlimit\fP() と \fBsetrlimit\fP() はそれぞれ資源 (resource) の制限
+(limit) の設定と取得を行う。 各リソースには、それに対応するソフトリミッ
+トとハードリミットがあり、 \fIrlimit\fP 構造体で定義される:
 .PP
 .in +4n
 .nf
 struct rlimit {
-    rlim_t rlim_cur;  /* ¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È */
-    rlim_t rlim_max;  /* ¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È
-                         (rlim_cur ¤è¤ê¾®¤µ¤¯¤Ê¤¤) */
+    rlim_t rlim_cur;  /* ソフトリミット */
+    rlim_t rlim_max;  /* ハードリミット
+                         (rlim_cur より小さくない) */
 };
 
 .fi
 .in
-¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤Ï¡¢¥«¡¼¥Í¥ë¤¬Âбþ¤¹¤ë¥ê¥½¡¼¥¹¤ËÂФ·¤Æ²Ý¤¹À©¸ÂÃͤǤ¢¤ë¡£
-¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤Ï¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤Î¾å¸Â¤È¤·¤ÆƯ¤¯¡£
-Æø¢¤ò»ý¤¿¤Ê¤¤¥×¥í¥»¥¹¤Ï¡¢¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤ÎÃͤò
-0 ¤«¤é¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤ÎÈϰϤËÀßÄꤹ¤ë¤³¤È¤È¡¢
-¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤ò²¼¤²¤ë¤³¤È¤Î¤ß¤¬¤Ç¤­¤ë
-(°ìÅÙ²¼¤²¤¿¥Ï¡¼¥É¥ê¥ß¥Ã¥È¤Ï¾å¤²¤é¤ì¤Ê¤¤)¡£
-Æø¢¥×¥í¥»¥¹ (Linux ¤Ç¤Ï
-.B CAP_SYS_RESOURCE
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability) ¤ò»ý¤Ä¥×¥í¥»¥¹) ¤Ï
-¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤È¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤ò¼«Í³¤ËÊѹ¹¤Ç¤­¤ë¡£
+ソフトリミットは、カーネルが対応するリソースに対して課す制限値である。 ハードリミットはソフトリミットの上限として働く。
+特権を持たないプロセスは、ソフトリミットの値を 0 からハードリミットの範囲に設定することと、 ハードリミットを下げることのみができる
+(一度下げたハードリミットは上げられない)。 特権プロセス (Linux では \fBCAP_SYS_RESOURCE\fP ケーパビリティ
+(capability) を持つプロセス) は ソフトリミットとハードリミットを自由に変更できる。
 .PP
-ÃÍ
-.B RLIM_INFINITY
-¤Ï¥ê¥½¡¼¥¹¤ËÀ©¸Â¤¬¤Ê¤¤¤³¤È¤òɽ¤¹
-(¤³¤ÎÃͤÏ
-.BR getrlimit ()
-¤¬ÊÖ¤¹¹½Â¤ÂΤÈ
-.BR setrlimit ()
-¤ËÅϤ¹¹½Â¤ÂΤÎξÊý¤Ç»ÈÍѤµ¤ì¤ë)¡£
+値 \fBRLIM_INFINITY\fP はリソースに制限がないことを表す (この値は \fBgetrlimit\fP()  が返す構造体と
+\fBsetrlimit\fP()  に渡す構造体の両方で使用される)。
 .PP
-.I resource
-¤Ï¼¡¤Î¤¤¤º¤ì¤« 1 ¤Ä¤Ç¤¢¤ë¡£
-.TP
-.B RLIMIT_AS
-¥×¥í¥»¥¹¤Î²¾ÁÛ¥á¥â¥ê (¥¢¥É¥ì¥¹¶õ´Ö) ¤ÎºÇÂ祵¥¤¥º (¥Ð¥¤¥Èñ°Ì)¡£
-.\" 2.0.27 / 2.1.12 °Ê¹ß¡£
-¤³¤ÎÀ©¸Â¤Ï
-.BR brk (2),
-.BR mmap (2),
-.BR mremap (2)
-¤Î¸Æ¤Ó½Ð¤·¤Ë±Æ¶Á¤·¡¢¤³¤ÎÀ©¸Â¤òĶ¤¨¤¿¾ì¹ç¤Ï
-¥¨¥é¡¼
-.B ENOMEM
-¤Ç¼ºÇÔ¤¹¤ë¡£
-¤Þ¤¿¼«Æ°Åª¤Ê¥¹¥¿¥Ã¥¯³ÈÄ¥¤Ë¤â¼ºÇÔ¤¹¤ë
-(¤µ¤é¤Ë
-.BR sigaltstack (2)
-¤ò»È¤Ã¤¿ÂåÂØ¥¹¥¿¥Ã¥¯¤òÍøÍѲÄǽ¤Ë¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
-.B SIGSEGV
-¤òÀ¸À®¤·¤Æ¤½¤Î¥×¥í¥»¥¹¤ò kill ¤¹¤ë)¡£
-¤³¤ÎÃͤϠ\fIlong\fP ·¿¤Ê¤Î¤Ç¡¢32 ¥Ó¥Ã¥È¤Î \fIlong\fP ·¿¤ò»ý¤Ä¥Þ¥·¥ó¤Ç¤Ï¡¢
-¤³¤ÎÀ©¸Â¤ÏºÇÂç¤Ç 2 GiB ¤Ë¤Ê¤ë¤«¡¢¤³¤Î»ñ¸»¤¬ÌµÀ©¸Â¤Ë¤Ê¤ë¡£
-.TP
-.B RLIMIT_CORE
-.I core
-¥Õ¥¡¥¤¥ë¤ÎºÇÂ祵¥¤¥º¡£
-0 ¤Î¾ì¹ç¡¢core ¥Õ¥¡¥¤¥ë¤ÏÀ¸À®¤µ¤ì¤Ê¤¤¡£
-0 °Ê³°¤Î¾ì¹ç¡¢¤³¤Î¥µ¥¤¥º¤è¤êÂ礭¤¤¥À¥ó¥×¤ÏÀÚ¤êµÍ¤á¤é¤ì¤ë¡£
-.TP
-.B RLIMIT_CPU
-CPU »þ´Ö¤Î¾å¸Â (Éÿô)¡£
-¥×¥í¥»¥¹¤¬¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤Ë㤷¤¿¾ì¹ç¤Ë¡¢
-.B SIGXCPU
-¥·¥°¥Ê¥ë¤òÁ÷¤ë¡£
-¤³¤Î¥·¥°¥Ê¥ë¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤Ï¡¢¥×¥í¥»¥¹¤Î½ªÎ»¤Ç¤¢¤ë¡£
-¤¿¤À¤·¥·¥°¥Ê¥ë¤ò¥­¥ã¥Ã¥Á¤·¤Æ¡¢¥Ï¥ó¥É¥é¤¬¥á¥¤¥ó¥×¥í¥°¥é¥à¤Ë
-À©¸æ¤òÊÖ¤¹¤³¤È¤â¤Ç¤­¤ë¡£
-¥×¥í¥»¥¹¤¬ CPU »þ´Ö¤ò»È¤¤Â³¤±¤¿¾ì¹ç¤Ï¡¢
-¥Ï¡¼¥É¥ê¥ß¥Ã¥È¤Ë㤹¤ë¤Þ¤Ç 1 ÉÃËè¤Ë¥×¥í¥»¥¹¤Ë
-.B SIGXCPU
-¤òÁ÷¤ê¡¢
-¥Ï¡¼¥É¥ê¥ß¥Ã¥È¤Ë㤹¤ë¤È
-.B SIGKILL
-¤òÁ÷¤ë¡£
-¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤òĶ²á¤·¤¿¤È¤­¤ÎÆ°ºî¤Ï¡¢
-Linux 2.2 ¤«¤é 2.6 ¤Î¤â¤Î¤Ç¤¢¤ë¡£
-¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤òĶ¤¨¤Æ CPU »þ´Ö¤ò»È¤¤Â³¤±¤ë¥×¥í¥»¥¹¤Î
-°·¤¤Êý¤Ë¤Ä¤¤¤Æ¤Î¼ÂÁõ¤ÏÊѲ½¤·¤Æ¤­¤Æ¤¤¤ë¡£
-¤³¤Î¥·¥°¥Ê¥ë¤ò¥­¥ã¥Ã¥Á¤¹¤ëɬÍפΤ¢¤ë
-°Ü¿¢À­¤ò¹Í¤¨¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢
-ºÇ½é¤Ë
-.B SIGXCPU
-¤ò¼õ¤±¼è¤Ã¤¿»þÅÀ¤ÇÀµ¤·¤¯½ªÎ»¤¹¤Ù¤­¤Ç¤¢¤ë¡£
-.TP
-.B RLIMIT_DATA
-¥×¥í¥»¥¹¤Î¥Ç¡¼¥¿¥»¥°¥á¥ó¥È
-(½é´ü²½¤µ¤ì¤¿¥Ç¡¼¥¿¡¦½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¥Ç¡¼¥¿¡¦¥Ò¡¼¥×) ¤ÎºÇÂçÃÍ¡£
-¤³¤Î¥ê¥ß¥Ã¥È¤Ï
-.BR brk (2)
-¤È
-.BR sbrk (2)
-¤Î¸Æ¤Ó½Ð¤·¤Ë±Æ¶Á¤¹¤ë¡£
-¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¤³¤Î¥ê¥½¡¼¥¹¤Î¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤Ë㤹¤ë¤È¡¢
-¥¨¥é¡¼
-.B ENOMEM
-¤Ç¼ºÇÔ¤¹¤ë¡£
-.TP
-.B RLIMIT_FSIZE
-¥×¥í¥»¥¹¤¬ºîÀ®¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤ÎºÇÂçÃÍ¡£
-¤³¤Î¥µ¥¤¥º¤òĶ¤¨¤Æ¥Õ¥¡¥¤¥ë¤ò³ÈÄ¥¤¹¤ë¤È¡¢
-.B SIGXFSZ
-¥·¥°¥Ê¥ë¤òÁ÷¤ë¡£
-¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¤³¤Î¥·¥°¥Ê¥ë¤Ï¥×¥í¥»¥¹¤ò½ªÎ»¤¹¤ë¡£
-¥×¥í¥»¥¹¤ò¥­¥ã¥Ã¥Á¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¤¬¡¢
-´ØÏ¢¤¹¤ë¥·¥¹¥Æ¥à¥³¡¼¥ë
-.RB ( write (2),
-.BR truncate (2)
-¤Ê¤É) ¤Ï¥¨¥é¡¼
-.B EFBIG
-¤Ç¼ºÇÔ¤¹¤ë¡£
-.TP
-.BR RLIMIT_LOCKS " (½é´ü¤Î Linux 2.4 ¤Î¤ß)"
-.\" Àµ³Î¤Ë¤Ï Linux 2.4.0-test9 ¤Î¤ß¡£2.4.25 / 2.5.65 ¤Ç¤Ï¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤ë¡£
-¤³¤Î¥×¥í¥»¥¹¤¬¼Â¹Ô¤Ç¤­¤ë
-.BR flock (2)
-¥í¥Ã¥¯¿ô¤È
-.BR fcntl (2)
-¥ê¡¼¥¹¿ô¤Î¹ç·×ÃͤòÀ©¸Â¤¹¤ë¡£
-.TP
-.B RLIMIT_MEMLOCK
-RAM Æâ¤Ë¥í¥Ã¥¯¤Ç¤­¤ë¥á¥â¥ê¤ÎºÇÂç¥Ð¥¤¥È¿ô¡£
-¼ÂºÝ¤Ë¤Ï¡¢¤³¤ÎÀ©¸Â¤Ï¥·¥¹¥Æ¥à¥Ú¡¼¥¸¥µ¥¤¥º¤ÎºÇ¤â¶á¤¤ÇÜ¿ô¤Ë
-ÀÚ¤ê¼Î¤Æ¤Æ´Ý¤á¤é¤ì¤ë¡£
-¤³¤ÎÀ©¸Â¤Ï
-.BR mlock (2),
-.BR mlockall (2),
-.BR mmap (2)
-¤Î
-.B MAP_LOCKED
-Áàºî¤Ë±Æ¶Á¤¹¤ë¡£
-Linux 2.6.9 °Ê¹ß¤Ç¤Ï
-.BR shmctl (2)
-.B SHM_LOCK
-Áàºî¤Ë¤â±Æ¶Á¤¹¤ë¡£
-¤³¤ÎÁàºî¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â (real) ¥æ¡¼¥¶¡¼ ID ¤Ë¥í¥Ã¥¯¤µ¤ì¤ë
-¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È
-.RB ( shmget (2)
-¤ò»²¾È) ¤Î¹ç·×¥Ð¥¤¥È¿ô¤ÎºÇÂçÃͤòÀßÄꤹ¤ë¡£
-.BR shmctl (2)
-.B SHM_LOCK
-¤Ë¤è¤ë¥í¥Ã¥¯¤Ï¡¢
-.BR mlock (2),
-.BR mlockall (2),
-.BR mmap (2)
-¤Î
-.B MAP_LOCKED
-¤Ë¤è¤Ã¤Æ³ÎΩ¤µ¤ì¤ë¥×¥í¥»¥¹Ëè¤Î¥á¥â¥ê¥í¥Ã¥¯¤È¤Ïʬ¤±¤Æ¿ô¤¨¤ë¡£
-1 ¤Ä¤Î¥×¥í¥»¥¹¤Ï¤³¤ÎÀ©¸Â¤Þ¤Ç¤Î¥Ð¥¤¥È¤ò¥í¥Ã¥¯¤Ç¤­¤ë¡£
-¤³¤ÎÀ©¸Â¤Ë¤Ï 2 ¤Ä¤Î¼ïÎब¤¢¤ë¡£
-2.6.9 ¤è¤êÁ°¤Î Linux ¥«¡¼¥Í¥ë ¤Ç¤Ï¡¢
-¤³¤ÎÀ©¸Â¤ÏÆø¢¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ¥í¥Ã¥¯¤µ¤ì¤ë¥á¥â¥ê¤Î¹ç·×¤òÀ©¸æ¤·¤Æ¤¤¤¿¡£
-Linux 2.6.9 °Ê¹ß¤Ç¤Ï¡¢Æø¢¥×¥í¥»¥¹¤¬¥í¥Ã¥¯¤¹¤ë¥á¥â¥ê¤Î¹ç·×¤ËÀ©¸Â¤Ï¤Ê¤¯¡¢
-Âå¤ï¤ê¤Ë¤³¤ÎÀ©¸Â¤ÏÈóÆø¢¥×¥í¥»¥¹¤¬¥í¥Ã¥¯¤¹¤ë¥á¥â¥ê¤Î¹ç·×¤Ë
-ŬÍѤµ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
-.TP
-.BR RLIMIT_MSGQUEUE " (Linux 2.6.8 °Ê¹ß)"
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â¥æ¡¼¥¶¡¼ ID ¤ËÂФ·¤Æ¡¢
-POSIX ¥á¥Ã¥»¡¼¥¸¥­¥å¡¼¤Î¤¿¤á¤Ë³ÎÊݤǤ­¤ë¥Ð¥¤¥È¿ô¤ÎÀ©¸Â¤ò»ØÄꤹ¤ë¡£
-¤³¤ÎÀ©¸Â¤Ï
-.BR mq_open (3)
-¤ËÂФ·¤ÆŬÍѤµ¤ì¤ë¡£
-¥æ¡¼¥¶¤¬ºîÀ®¤·¤¿³Æ¡¹¤Î¥á¥Ã¥»¡¼¥¸¥­¥å¡¼¤Î¥Ð¥¤¥È¿ô¤Ï
-°Ê²¼¤Î¼°¤Ë¤è¤ê·×»»¤µ¤ì¡¢(¤½¤Î¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤ë¤Þ¤Ç¤Î´Ö)
-¤³¤ÎÀ©¸Â¤Î·×»»Âоݤ˴ޤá¤é¤ì¤ë¡£
+\fIresource\fP 引き数は次のいずれか 1 つである。
+.TP 
+\fBRLIMIT_AS\fP
+.\" since 2.0.27 / 2.1.12
+プロセスの仮想メモリ (アドレス空間) の最大サイズ (バイト単位)。 この制限は \fBbrk\fP(2), \fBmmap\fP(2),
+\fBmremap\fP(2)  の呼び出しに影響し、この制限を超えた場合は エラー \fBENOMEM\fP で失敗する。 また自動的なスタック拡張にも失敗する
+(さらに \fBsigaltstack\fP(2)  を使った代替スタックを利用可能にしていなかった場合には、 \fBSIGSEGV\fP を生成してそのプロセスを
+kill する)。 この値は \fIlong\fP 型なので、32 ビットの \fIlong\fP 型を持つマシンでは、 この制限は最大で 2 GiB
+になるか、この資源が無制限になる。
+.TP 
+\fBRLIMIT_CORE\fP
+\fIcore\fP ファイルの最大サイズ。 0 の場合、core ファイルは生成されない。 0 以外の場合、このサイズより大きいダンプは切り詰められる。
+.TP 
+\fBRLIMIT_CPU\fP
+CPU 時間の上限 (秒数)。プロセスがソフトリミットに達した場合に、
+\fBSIGXCPU\fP シグナルを送る。このシグナルに対するデフォルトの動作は、
+プロセスの終了である。ただし、シグナルをキャッチして、ハンドラがメイン
+プログラムに制御を返すこともできる。プロセスが CPU 時間を使い続けた
+場合は、ハードリミットに達するまで 1 秒毎にプロセスに \fBSIGXCPU\fP を送り、
+ハードリミットに達すると \fBSIGKILL\fP を送る。
+(ソフトリミットを超過したときの動作は、 Linux における動作である。ソフ
+トリミットを超えて CPU 時間を使い続けるプロセスの扱い方についての実装は
+変化してきている。 このシグナルをキャッチする必要のある 移植性を考えた
+アプリケーションでは、 最初に \fBSIGXCPU\fP を受け取った時点で正しく終了
+すべきである。)
+.TP 
+\fBRLIMIT_DATA\fP
+プロセスのデータセグメント (初期化されたデータ・初期化されていないデータ・ヒープ) の最大値。 このリミットは \fBbrk\fP(2)  と
+\fBsbrk\fP(2)  の呼び出しに影響する。 これらの関数は、このリソースのソフトリミットに達すると、 エラー \fBENOMEM\fP で失敗する。
+.TP 
+\fBRLIMIT_FSIZE\fP
+プロセスが作成できるファイルサイズの最大値。 このサイズを超えてファイルを拡張すると、 \fBSIGXFSZ\fP シグナルを送る。
+デフォルトでは、このシグナルはプロセスを終了する。 プロセスをキャッチすることもできるが、 関連するシステムコール (\fBwrite\fP(2),
+\fBtruncate\fP(2)  など) はエラー \fBEFBIG\fP で失敗する。
+.TP 
+\fBRLIMIT_LOCKS\fP (初期の Linux 2.4 のみ)
+.\" to be precise: Linux 2.4.0-test9; no longer in 2.4.25 / 2.5.65
+このプロセスが実行できる \fBflock\fP(2)  ロック数と \fBfcntl\fP(2)  リース数の合計値を制限する。
+.TP 
+\fBRLIMIT_MEMLOCK\fP
+RAM 内にロックできるメモリの最大バイト数。 実際には、この制限はシステムページサイズの最も近い倍数に 切り捨てて丸められる。 この制限は
+\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)
+\fBSHM_LOCK\fP によるロックは、 \fBmlock\fP(2), \fBmlockall\fP(2), \fBmmap\fP(2)  の
+\fBMAP_LOCKED\fP によって確立されるプロセス毎のメモリロックとは分けて数える。 1 つのプロセスはこの制限までのバイトをロックできる。
+この制限には 2 つの種類がある。 2.6.9 より前の Linux カーネル では、
+この制限は特権プロセスによってロックされるメモリの合計を制御していた。 Linux 2.6.9
+以降では、特権プロセスがロックするメモリの合計に制限はなく、 代わりにこの制限は非特権プロセスがロックするメモリの合計に 適用されるようになった。
+.TP 
+\fBRLIMIT_MSGQUEUE\fP (Linux 2.6.8 以降)
+呼び出し元プロセスの実ユーザー ID に対して、 POSIX メッセージキューのために確保できるバイト数の制限を指定する。 この制限は
+\fBmq_open\fP(3)  に対して適用される。 ユーザが作成した各々のメッセージキューのバイト数は
+以下の式により計算され、(そのキューが削除されるまでの間)  この制限の計算対象に含められる。
 .nf
 
     bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +
             attr.mq_maxmsg * attr.mq_msgsize
 
 .fi
-¤³¤³¤Ç
-.I attr
-¤Ï
-.I mq_attr
-¹½Â¤ÂΤǤ¢¤ê¡¢
-.BR mq_open (3)
-¤ÎÂè 4 °ú¤­¿ô¤È¤·¤Æ»ØÄꤵ¤ì¤ë¡£
+ここで \fIattr\fP は \fImq_attr\fP 構造体であり、 \fBmq_open\fP(3)  の第 4 引き数として指定される。
 
-.I "sizeof(struct msg_msg *)"
-(Linux/i386 ¤Ç¤Ï 4 ¥Ð¥¤¥È) ¤ò´Þ¤àºÇ½é¤Î²Ã¿ô¤Ï¡¢
-¥æ¡¼¥¶¡¼¤¬Ä¹¤µ 0 ¤Î¥á¥Ã¥»¡¼¥¸¤ò̵À©¸Â¤Ëºî¤ì¤Ê¤¤¤³¤ÈÊݾڤ·¤Æ¤¤¤ë
-(¤³¤Î¤è¤¦¤Ê¥á¥Ã¥»¡¼¥¸¤Ç¤¢¤Ã¤Æ¤â¡¢
-µ­Ï¿¤Î¤¿¤á¤Î¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤Ç¥·¥¹¥Æ¥à¥á¥â¥ê¤ò¾ÃÈñ¤¹¤ë)¡£
-.TP
-.BR RLIMIT_NICE " (Linux 2.6.12 °Ê¹ß, ²¼µ­¤Î¡Ö¥Ð¥°¡×¤ÎÀá¤â»²¾È)"
-.BR setpriority (2)
-¤ä
-.BR nice (2)
-¤ò»È¤Ã¤Æ°ú¤­¾å¤²¤é¤ì¤ë¥×¥í¥»¥¹¤Î nice Ãͤξå¸Â¤ò»ØÄꤹ¤ë¡£
-nice Ãͤμºݤξå¸Â¤Ï
-.I "20\ \-\ rlim_cur"
-¤Ç·×»»¤µ¤ì¤ë
-(¤³¤Î¤è¤¦¤ÊÊѤʾõ¶·¤Ï¡¢¥ê¥½¡¼¥¹À©¸ÂÃͤȤ·¤ÆÉé¤Î¿ô¤ò»ØÄê¤Ç¤­¤Ê¤¤¤¿¤á
-ȯÀ¸¤¹¤ë¡£Ä̾Éé¤ÎÃͤÏÆÃÊ̤ʰÕÌ£¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£
-Î㤨¤Ð¡¢Ä̾ï¤Ï
-.B RLIM_INFINITY
-¤ÎÃͤϠ\-1 ¤Ç¤¢¤ë)¡£
-.TP
-.B RLIMIT_NOFILE
-¤³¤Î¥×¥í¥»¥¹¤¬¥ª¡¼¥×¥ó¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¿ô¤ÎºÇÂçÃͤè¤ê
-1 Â礭¤¤Ãͤò»ØÄꤹ¤ë¡£
-.RB ( open (2),
-.BR pipe (2),
-.BR dup (2)
-¤Ê¤É¤Ë¤è¤ê) ¤³¤Î¾å¸Â¤òĶ¤¨¤è¤¦¤È¤·¤¿¾ì¹ç¡¢¥¨¥é¡¼
-.B EMFILE
-¤¬È¯À¸¤¹¤ë
-(Îò»ËŪ¤Ë¡¢BSD ¤Ç¤Ï¤³¤Î¾å¸Â¤Ï
-.B RLIMIT_OFILE
-¤È¤¤¤¦Ì¾Á°¤È¤Ê¤Ã¤Æ¤¤¤ë)¡£
-.TP
-.B RLIMIT_NPROC
-¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¥æ¡¼¥¶¡¼ ID ¤ÇºîÀ®¤Ç¤­¤ëºÇÂç¥×¥í¥»¥¹¿ô
-(¤è¤êÀµ³Î¤Ë¤Ï Linux ¤Ç¤Ï¥¹¥ì¥Ã¥É¿ô)¡£
-¤³¤Î¾å¸Â¤Ë㤹¤ë¤È¡¢
-.BR fork (2)
-¤Ï¥¨¥é¡¼
-.B EAGAIN
-¤Ç¼ºÇÔ¤¹¤ë¡£
-.TP
-.B RLIMIT_RSS
-¥×¥í¥»¥¹¤Î resident set (RAM ¾å¤Ë¸ºß¤¹¤ë²¾ÁÛ¥Ú¡¼¥¸¤Î¿ô) ¤Î
-¾å¸Â¤ò (¥Ú¡¼¥¸¿ô¤Ç) »ØÄꤹ¤ë¡£
-¤³¤ÎÀ©¸Â¤Ï 2.4.30 ¤è¤êÁ°¤Ç¤·¤«±Æ¶Á¤¬¤Ê¤¯¡¢
-.BR madvise (2)
-¤Ë
-.B MADV_WILLNEED
-¤ò»ØÄꤷ¤¿´Ø¿ô¥³¡¼¥ë¤Ë¤·¤«±Æ¶Á¤·¤Ê¤¤¡£
-.\" ¥«¡¼¥Í¥ë 2.6.12 ¤Î»þÅÀ¤Ç¤Ï¡¢
-.\" ¤³¤ÎÀ©¸Â¤Ï¥«¡¼¥Í¥ë 2.6 ¤Ç¤Ï¤Þ¤À²¿¤â¹Ô¤ï¤Ê¤¤¡£
-.\" ¤·¤«¤·¡¢²¿¤ò¤µ¤»¤ë¤«¤Ë¤Ä¤¤¤Æ¤Ï LKML ¤Ç»þ¡¹ÏÃÂê¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
+\fIsizeof(struct msg_msg\ *)\fP (Linux/i386 では 4 バイト) を含む最初の加数は、 ユーザーが長さ 0
+のメッセージを無制限に作れないこと保証している (このようなメッセージであっても、 記録のためのオーバーヘッドでシステムメモリを消費する)。
+.TP 
+\fBRLIMIT_NICE\fP (Linux 2.6.12 以降, 下記の「バグ」の節も参照)
+\fBsetpriority\fP(2)  や \fBnice\fP(2)  を使って引き上げられるプロセスの nice 値の上限を指定する。 nice
+値の実際の上限は \fI20\ \-\ rlim_cur\fP で計算される (このような変な状況は、リソース制限値として負の数を指定できないため
+発生する。通常、負の値は特別な意味を持っているからである。 例えば、通常は \fBRLIM_INFINITY\fP の値は \-1 である)。
+.TP 
+\fBRLIMIT_NOFILE\fP
+このプロセスがオープンできるファイルディスクリプタ数の最大値より 1 大きい値を指定する。 (\fBopen\fP(2), \fBpipe\fP(2),
+\fBdup\fP(2)  などにより) この上限を超えようとした場合、エラー \fBEMFILE\fP が発生する (歴史的に、BSD ではこの上限は
+\fBRLIMIT_OFILE\fP という名前となっている)。
+.TP 
+\fBRLIMIT_NPROC\fP
+呼び出したプロセスの実ユーザー ID で作成できる最大プロセス数 (より正確には Linux ではスレッド数)。 この上限に達すると、
+\fBfork\fP(2)  はエラー \fBEAGAIN\fP で失敗する。
+.TP 
+\fBRLIMIT_RSS\fP
+.\" As at kernel 2.6.12, this limit still does nothing in 2.6 though
+.\" talk of making it do something has surfaced from time to time in LKML
 .\"       -- MTK, Jul 05
-.TP
-.BR RLIMIT_RTPRIO " (Linux 2.6.12 °Ê¹ß, ¥Ð¥°¤ÎÀá¤â»²¾È)"
-.BR sched_setscheduler (2)
-¤ä
-.BR sched_setparam (2)
-¤ò»È¤Ã¤ÆÀßÄê¤Ç¤­¤ë¡¢¤½¤Î¥×¥í¥»¥¹¤Î¥ê¥¢¥ë¥¿¥¤¥àÍ¥ÀèÅ٤ξå¸Â¤ò»ØÄꤹ¤ë¡£
-.TP
-.BR RLIMIT_RTTIME " (Linux 2.6.25 °Ê¹ß)"
-¥ê¥¢¥ë¥¿¥¤¥à¡¦¥¹¥±¥¸¥å¡¼¥ê¥ó¥°Êý¿Ë¤Ç¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤µ¤ì¤ë¥×¥í¥»¥¹¤¬
-¥Ö¥í¥Ã¥­¥ó¥°·¿¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¸Æ¤Ó½Ð¤µ¤º¤Ë¾ÃÈñ¤¹¤ë¤³¤È¤Î¤Ç¤­¤ë
-CPU »þ´Ö¤Î¹ç·×¤Ë¤Ä¤¤¤Æ¤Î¾å¸Â¤ò (¥Þ¥¤¥¯¥íÉÃñ°Ì¤Ç) »ØÄꤹ¤ë¡£
-¤³¤Î¾å¸Â¤ÎÌÜŪ¤Î¤¿¤á¡¢¥×¥í¥»¥¹¤¬¥Ö¥í¥Ã¥­¥ó¥°·¿¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò
-¸Æ¤Ó½Ð¤¹Å٤ˡ¢¾ÃÈñ¤µ¤ì¤¿ CPU »þ´Ö¤Î¥«¥¦¥ó¥È¤Ï 0 ¤Ë¥ê¥»¥Ã¥È¤µ¤ì¤ë¡£
-¥×¥í¥»¥¹¤¬ CPU ¤ò»È¤¤Â³¤±¤è¤¦¤È¤·¤¿¤¬Â¾¤Î¥×¥í¥»¥¹¤ËÃÖ¤­´¹¤¨¤é¤ì¤¿
-(preempted) ¾ì¹ç¤ä¡¢¤½¤Î¥×¥í¥»¥¹¤Î¥¿¥¤¥à¥¹¥é¥¤¥¹¤¬Ëþλ¤·¤¿¾ì¹ç¡¢
-¤½¤Î¥×¥í¥»¥¹¤¬
-.BR sched_yield (2)
-¤ò¸Æ¤Ó½Ð¤·¤¿¾ì¹ç¤Ï¡¢CPU »þ´Ö¤Î¥«¥¦¥ó¥È¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤Ê¤¤¡£
+プロセスの resident set (RAM 上に存在する仮想ページの数) の 上限を (ページ数で) 指定する。 この制限は 2.4.30
+より前でしか影響がなく、 \fBmadvise\fP(2)  に \fBMADV_WILLNEED\fP を指定した関数コールにしか影響しない。
+.TP 
+\fBRLIMIT_RTPRIO\fP (Linux 2.6.12 以降, バグの節も参照)
+\fBsched_setscheduler\fP(2)  や \fBsched_setparam\fP(2)
+を使って設定できる、そのプロセスのリアルタイム優先度の上限を指定する。
+.TP 
+\fBRLIMIT_RTTIME\fP (Linux 2.6.25 以降)
+リアルタイムスケジューリング方針でスケジューリングされるプロセスが ブロッキング型のシステムコールを呼び出さずに消費することのできる CPU
+時間の合計についての上限を (マイクロ秒単位で) 指定する。 この上限の目的のため、プロセスがブロッキング型のシステムコールを 呼び出す度に、消費された
+CPU 時間のカウントは 0 にリセットされる。 プロセスが CPU を使い続けようとしたが他のプロセスに置き換えられた (preempted)
+場合や、そのプロセスのタイムスライスが満了した場合、 そのプロセスが \fBsched_yield\fP(2)  を呼び出した場合は、CPU
+時間のカウントはリセットされない。
+
+ソフトリミットに達すると、そのプロセスに \fBSIGXCPU\fP シグナルが送られる。そのプロセスがこのシグナルを捕捉するか 無視して、CPU
+時間を消費し続けた場合には、 ハードリミットに達するまで 1 秒に 1 回 \fBSIGXCPU\fP が生成され続けることになる。
+ハードリミットに達した時点で、そのプロセスには \fBSIGKILL\fP シグナルが送られる。
+
+この上限を意図的に使用するのは、暴走したリアルタイムプロセスを 停止して、システムが動かなくなるのを避ける場合である。
+.TP 
+\fBRLIMIT_SIGPENDING\fP (Linux 2.6.8 以降)
+.\" This replaces the /proc/sys/kernel/rtsig-max system-wide limit
+.\" that was present in kernels <= 2.6.7.  MTK Dec 04
+呼び出し元プロセスの実ユーザー ID に対して キューに入れられるシグナルの
+数の制限を指定する。この制限をチェックするため、標準シグナルとリアルタ
+イムシグナルの両方がカウントされる。しかし、この制限は \fBsigqueue\fP(3)
+に対してのみ適用され、 \fBkill\fP(2) 使うことで、そのプロセスに対してま
+だキューに入れられていない シグナルのインスタンスをキューに入れることが
+できる。
+.TP 
+\fBRLIMIT_STACK\fP
+プロセススタックの最大サイズをバイト単位で指定する。 この上限に達すると、 \fBSIGSEGV\fP シグナルが生成される。 このシグナルを扱うためには、
+プロセスは代りのシグナルスタック (\fBsigaltstack\fP(2))  を使用しなければならない。
 
-¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤Ë㤹¤ë¤È¡¢¤½¤Î¥×¥í¥»¥¹¤Ë
-.B SIGXCPU
-¥·¥°¥Ê¥ë¤¬Á÷¤é¤ì¤ë¡£¤½¤Î¥×¥í¥»¥¹¤¬¤³¤Î¥·¥°¥Ê¥ë¤òÊ᪤¹¤ë¤«
-̵»ë¤·¤Æ¡¢CPU »þ´Ö¤ò¾ÃÈñ¤·Â³¤±¤¿¾ì¹ç¤Ë¤Ï¡¢
-¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤Ë㤹¤ë¤Þ¤Ç 1 Éäˠ1 ²ó
-.B SIGXCPU
-¤¬À¸À®¤µ¤ì³¤±¤ë¤³¤È¤Ë¤Ê¤ë¡£
-¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤Ë㤷¤¿»þÅÀ¤Ç¡¢¤½¤Î¥×¥í¥»¥¹¤Ë¤Ï
-.B SIGKILL
-¥·¥°¥Ê¥ë¤¬Á÷¤é¤ì¤ë¡£
+Linux 2.6.23 以降では、この制限はプロセスのコマンドライン引き数と環境変数
+に使用される空間の合計サイズの上限の決定にも使用される。詳細については \fBexecve\fP(2)  を参照。
+.SS prlimit()
+.\" commit c022a0acad534fd5f5d5f17280f6d4d135e74e81
+.\" Author: Jiri Slaby <jslaby@suse.cz>
+.\" Date:   Tue May 4 18:03:50 2010 +0200
+Linux 固有の \fBprlimit\fP() システムコールは、 \fBsetrlimit\fP() と \fBgetrlimit\fP
+の機能を合わせて拡張したものである。 このシステムコールを使って、任意のプロセスのリソース上限の設定と取得を行うことができる。
+
+\fIresource\fP 引き数は \fBsetrlimit\fP() や \fBgetrlimit\fP() と同じ意味である。
+
+\fInew_limit\fP 引き数が NULL 以外の場合、 \fInew_limit\fP が指す \fIrlimit\fP 構造体を使って \fIresource\fP
+のソフトリミットとハードリミットの新しい値が設定される。 \fIold_limit\fP 引き数が NULL 以外の場合、 \fBprlimit\fP()
+の呼び出しが成功すると、 \fIresource\fP の直前のソフトリミットとハードリミットが \fIold_limit\fP が指す \fIrlimit\fP
+構造体に格納される。
+
+.\" FIXME this permission check is strange
+.\" Asked about this on LKML, 7 Nov 2010
+.\"     "Inconsistent credential checking in prlimit() syscall"
+\fIpid\fP 引き数は呼び出しの操作対象となるプロセス ID を指定する。 \fIpid\fP が 0
+の場合、呼び出しは呼び出し元プロセスに対して適用される。 自分以外のプロセスのリソースの設定と取得を行うためには、 呼び出し元プロセスが
+\fBCAP_SYS_RESOURCE\fP ケーパビリティを持っているか、 対象となるプロセスの実ユーザ ID、 実効ユーザ ID、 保存
+set\-user\-ID が呼び出し元プロセスの実ユーザ ID と一致し、 かつ、 対象となるプロセスの実グループ ID、 実効グループ ID、 保存
+set\-group\-ID が呼び出し元プロセスの実グループ ID と一致していなければならない。
+.SH 返り値
+成功した場合、これらのシステムコールは 0 を返す。
+エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+場所を指すポインタ引き数がアクセス可能なアドレス空間外を指している。
+.TP 
+\fBEINVAL\fP
+\fIresource\fP で指定された値が有効でない。
+または、 \fBsetrlimit\fP() や \fBprlimit\fP() で、
+\fIrlim\->rlim_cur\fP が \fIrlim\->rlim_max\fP よりも大きかった。
+.TP 
+\fBEPERM\fP
+特権のないプロセスがハードリミットを上げようとした。
+これを行うためには \fBCAP_SYS_RESOURCE\fP ケーパビリティが必要である。
+または、特権のないプロセスが \fBRLIMIT_NOFILE\fP ハードリミットを
+現在のカーネルの最大値 (\fBNR_OPEN\fP) 以上に増やそうとした。
+または、呼び出したプロセスが \fIpid\fP で指定されたプロセスのリミットを
+設定する許可を持っていなかった。
+.TP 
+\fBESRCH\fP
+\fIpid\fP で指定された ID のプロセスが見つからなかった。
+.SH バージョン
+\fBprlimit\fP() システムコールは Linux 2.6.36 以降で利用できる。 ライブラリのサポートは glibc 2.13
+以降で利用できる。
+.SH 準拠
+\fBgetrlimit\fP(), \fBsetrlimit\fP(): SVr4, 4.3BSD, POSIX.1\-2001.
+.br
+\fBprlimit\fP(): Linux 固有。
 
-¤³¤Î¾å¸Â¤ò°Õ¿ÞŪ¤Ë»ÈÍѤ¹¤ë¤Î¤Ï¡¢Ë½Áö¤·¤¿¥ê¥¢¥ë¥¿¥¤¥à¡¦¥×¥í¥»¥¹¤ò
-Ää»ß¤·¤Æ¡¢¥·¥¹¥Æ¥à¤¬Æ°¤«¤Ê¤¯¤Ê¤ë¤Î¤òÈò¤±¤ë¾ì¹ç¤Ç¤¢¤ë¡£
-.TP
-.BR RLIMIT_SIGPENDING " (Linux 2.6.8 °Ê¹ß)"
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¼Â¥æ¡¼¥¶¡¼ ID ¤ËÂФ·¤Æ
-¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤ë¥·¥°¥Ê¥ë¤Î¿ô¤ÎÀ©¸Â¤ò»ØÄꤹ¤ë¡£
-¤³¤ÎÀ©¸Â¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤¿¤á¡¢
-ɸ½à¥·¥°¥Ê¥ë¤È¥ê¥¢¥ë¥¿¥¤¥à¡¦¥·¥°¥Ê¥ë¤ÎξÊý¤¬¥«¥¦¥ó¥È¤µ¤ì¤ë¡£
-¤·¤«¤·¡¢¤³¤ÎÀ©¸Â¤Ï
-.BR sigqueue (2)
-¤ËÂФ·¤Æ¤·¤«¶¯À©¤µ¤ì¤º¡¢
-.BR kill (2)
-»È¤¦¤³¤È¤Ç¡¢¤½¤Î¥×¥í¥»¥¹¤ËÂФ·¤Æ¤Þ¤À¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤Æ¤¤¤Ê¤¤
-¥·¥°¥Ê¥ë¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò¥­¥å¡¼¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-.\" ¤³¤ì¤Ï¥«¡¼¥Í¥ë 2.6.7 °ÊÁ°¤Ë¸ºß¤¹¤ë¥·¥¹¥Æ¥àÁ´ÂΤÎÀ©¸Â
-.\" /proc/sys/kernel/rtsig-max ¤òÃÖ¤­´¹¤¨¤ë¡£MTK Dec 04
-.TP
-.B RLIMIT_STACK
-¥×¥í¥»¥¹¡¦¥¹¥¿¥Ã¥¯¤ÎºÇÂ祵¥¤¥º¤ò¥Ð¥¤¥Èñ°Ì¤Ç»ØÄꤹ¤ë¡£
-¤³¤Î¾å¸Â¤Ë㤹¤ë¤È¡¢
-.B SIGSEGV
-¥·¥°¥Ê¥ë¤¬À¸À®¤µ¤ì¤ë¡£
-¤³¤Î¥·¥°¥Ê¥ë¤ò°·¤¦¤¿¤á¤Ë¤Ï¡¢
-¥×¥í¥»¥¹¤ÏÂå¤ê¤Î¥·¥°¥Ê¥ë¥¹¥¿¥Ã¥¯
-.RB ( sigaltstack (2))
-¤ò»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+\fBRLIMIT_MEMLOCK\fP と \fBRLIMIT_NPROC\fP は BSD から派生し、
+POSIX.1\-2001 には指定されていない。
+これらは BSD 系と Linux に存在するが、他の実装は少ない。
+\fBRLIMIT_RSS\fP は BSD から派生し、POSIX.1\-2001 には指定されていない。
+それにも関わらず多くの実装で存在する。
+\fBRLIMIT_MSGQUEUE\fP, \fBRLIMIT_NICE\fP, \fBRLIMIT_RTPRIO\fP, \fBRLIMIT_RTTIME\fP,
+\fBRLIMIT_SIGPENDING\fP は Linux 固有のものである。
+.SH 注意
+\fBfork\fP(2)  で作成された作成された子プロセスは、 親プロセスのリソース制限を継承する。 \fBexecve\fP(2)
+の前後でリソース制限は保存される。
 
-Linux 2.6.23 °Ê¹ß¤Ç¤Ï¡¢¤³¤ÎÀ©¸Â¤Ï¥×¥í¥»¥¹¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¤­¿ô¤È´Ä¶­ÊÑ¿ô
-¤Ë»ÈÍѤµ¤ì¤ë¶õ´Ö¤Î¹ç·×¥µ¥¤¥º¤Î¾å¸Â¤Î·èÄê¤Ë¤â»ÈÍѤµ¤ì¤ë¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï
-.BR execve (2)
-¤ò»²¾È¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù¤·¤¿¾ì¹ç¤Ï 0 ¤¬ÊÖ¤µ¤ì¤ë¡£¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤¬ÊÖ¤µ¤ì¡¢
-.I errno
-¤ËŬÀÚ¤ÊÃͤ¬ÀßÄꤵ¤ì¤ë¡£
-.SH ¥¨¥é¡¼
-.TP
-.B EFAULT
-.I rlim
-¤¬¥¢¥¯¥»¥¹²Äǽ¤Ê¥¢¥É¥ì¥¹¶õ´Ö¤Î³°¤ò»Ø¤·¤Æ¤¤¤ë¡£
-.TP
-.B EINVAL
-.I resource
-¤¬Í­¸ú¤Ç¤Ê¤¤¡£
-¤Þ¤¿¤Ï¡¢
-.BR setrlimit ()
-¤Ç¡¢
-.I rlim\->rlim_cur
-¤¬
-.I rlim\->rlim_max
-¤è¤ê¤âÂ礭¤«¤Ã¤¿¡£
-.TP
-.B EPERM
-Æø¢¤Î¤Ê¤¤¥×¥í¥»¥¹¤¬
-.BR setrlimit ()
-¤ò»ÈÍѤ·¤Æ
-¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤Þ¤¿¤Ï¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤ò
-¸½ºß¤Î¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤è¤êÂ礭¤¯¤·¤è¤¦¤È»î¤ß¤¿¡£
-¤³¤ì¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï
-.B CAP_SYS_RESOURCE
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤¬É¬ÍפǤ¢¤ë¡£
-¤Þ¤¿¤ÏÆø¢¤Î¤Ê¤¤¥×¥í¥»¥¹¤¬
-.BR setrlimit ()
-¤ò»ÈÍѤ·¤Æ
-¥½¥Õ¥È¤Þ¤¿¤Ï¥Ï¡¼¥É
-.B RLIMIT_NOFILE
-¥ê¥ß¥Ã¥È¤ò¸½ºß¤Î¥«¡¼¥Í¥ë¤ÎºÇÂçÃÍ
-.RB ( NR_OPEN )
-°Ê¾å¤ËÁý²Ã¤µ¤»¤è¤¦¤È¤·¤¿¡£
-.SH ½àµò
-SVr4, 4.3BSD, POSIX.1-2001.
-.B RLIMIT_MEMLOCK
-¤È
-.B RLIMIT_NPROC
-¤Ï BSD ¤«¤éÇÉÀ¸¤·¡¢POSIX.1-2001 ¤Ë¤Ï»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
-¤³¤ì¤é¤Ï BSD ·Ï¤È Linux ¤Ë¸ºß¤¹¤ë¤¬¡¢Â¾¤Î¼ÂÁõ¤Ï¾¯¤Ê¤¤¡£
-.R RLIMIT_RSS
-¤Ï BSD ¤«¤éÇÉÀ¸¤·¡¢POSIX.1-2001 ¤Ë¤Ï»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
-¤½¤ì¤Ë¤â´Ø¤ï¤é¤ºÂ¿¤¯¤Î¼ÂÁõ¤Ç¸ºß¤¹¤ë¡£
-.BR RLIMIT_MSGQUEUE ,
-.BR RLIMIT_NICE ,
-.BR RLIMIT_RTPRIO ,
-.BR RLIMIT_RTTIME ,
-.B RLIMIT_SIGPENDING
-¤Ï Linux ¸ÇÍ­¤Î¤â¤Î¤Ç¤¢¤ë¡£
-.SH Ãí°Õ
-.BR fork (2)
-¤ÇºîÀ®¤µ¤ì¤¿ºîÀ®¤µ¤ì¤¿»Ò¥×¥í¥»¥¹¤Ï¡¢
-¿Æ¥×¥í¥»¥¹¤Î¥ê¥½¡¼¥¹À©¸Â¤ò·Ñ¾µ¤¹¤ë¡£
-.BR execve (2)
-¤ÎÁ°¸å¤Ç¥ê¥½¡¼¥¹À©¸Â¤ÏÊݸ¤µ¤ì¤ë¡£
+Lowering the soft limit for a resource below the process's current
+consumption of that resource will succeed (but will prevent the process from
+further increasing its consumption of the resource).
 
-¥·¥§¥ë¤Î¥ê¥½¡¼¥¹À©¸Â¤Ï¡¢¥·¥§¥ë¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤Ç¤¢¤ë
-.I ulimit
-.RB ( csh (1)
-¤Ç¤Ï
-.I limit )
-¤ò»È¤Ã¤ÆÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-¤³¤Î¥·¥§¥ë¤Î¥ê¥½¡¼¥¹À©¸Â¤Ï¡¢¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ¥·¥§¥ë¤¬À¸À®¤¹¤ë¥×¥í¥»¥¹
-¤Ë°ú¤­·Ñ¤¬¤ì¤ë¡£
+シェルのリソース制限は、シェルの組み込みコマンドである \fIulimit\fP (\fBcsh\fP(1)  では \fIlimit )\fP
+を使って設定することができる。 このシェルのリソース制限は、コマンドを実行してシェルが生成するプロセス に引き継がれる。
 
-¸Å¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢
-.BR setrlimit ()
-¤ÈƱÍͤÎÌÜŪ¤ò»ý¤Ä´Ø¿ô
-.BR vlimit ()
-¤¬Ä󶡤µ¤ì¤Æ¤¤¤¿¡£
-¸åÊý¸ß´¹À­¤Î¤¿¤á¡¢glibc ¤Ç¤â
-.BR vlimit ()
-¤òÄ󶡤·¤Æ¤¤¤ë¡£
-Á´¤Æ¤Î¿·¤·¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢
-.BR setrlimit ()
-¤ò»ÈÍѤ¹¤Ù¤­¤Ç¤¢¤ë¡£
-.SH ¥Ð¥°
-°ÊÁ°¤Î Linux ¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¥×¥í¥»¥¹¤¬¥½¥Õ¥È¤Þ¤¿¤Ï¥Ï¡¼¥É
-.B RLIMIT_CPU
-¥ê¥ß¥Ã¥È¤Ë㤷¤¿¾ì¹ç¤ËÁ÷¤é¤ì¤ë
-.B SIGXCPU
-¤È
-.B SIGKILL
-¥·¥°¥Ê¥ë¤¬¡¢ËÜÍèÁ÷¤é¤ì¤ë¤Ù¤­»þÅÀ¤Î 1 (CPU) Éøå¤ËÁ÷¤é¤ì¤Æ¤·¤Þ¤¦¡£
-¤³¤ì¤Ï¥«¡¼¥Í¥ë 2.6.8 ¤Ç½¤Àµ¤µ¤ì¤¿¡£
+Linux 2.6.24 以降では、 プロセスのリソース上限は \fI/proc/[pid]/limits\fP で知ることができる。 \fBproc\fP(5)
+参照。
+
+古いシステムでは、 \fBsetrlimit\fP()  と同様の目的を持つ関数 \fBvlimit\fP()  が提供されていた。 後方互換性のため、glibc
+でも \fBvlimit\fP()  を提供している。 全ての新しいアプリケーションでは、 \fBsetrlimit\fP()  を使用すべきである。
+.SH バグ
+.\" FIXME prlimit() does not suffer
+.\" https://bugzilla.kernel.org/show_bug.cgi?id=5042
+.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=12201
+.\" Since versions 2.13, glibc has library implementations of
+.\" getrlimit() and setrlimit() that use prlimit() to work around
+.\" this bug.
+以前の Linux カーネルでは、プロセスがソフトまたはハード \fBRLIMIT_CPU\fP リミットに達した場合に送られる \fBSIGXCPU\fP と
+\fBSIGKILL\fP シグナルが、本来送られるべき時点の 1 (CPU) 秒後に送られてしまう。 これはカーネル 2.6.8 で修正された。
 
-2.6.17 ¤è¤êÁ°¤Î 2.6.x ¥«¡¼¥Í¥ë¤Ç¤Ï¡¢
-.B RLIMIT_CPU
-¥ê¥ß¥Ã¥È¤¬ 0 ¤Î¾ì¹ç¡¢
-.RB ( RLIM_INFINITY
-¤ÈƱ¤¸¤è¤¦¤Ë) ¡ÖÀ©¸Â¤Ê¤·¡×¤È´Ö°ã¤Ã¤Æ²ò¼á¤µ¤ì¤Æ¤¤¤¿¡£
-Linux 2.6.17 °Ê¹ß¤Ç¤Ï¡¢¥ê¥ß¥Ã¥È¤ò 0 ¤ËÀßÄꤷ¤¿¾ì¹ç¤Ë¤â
-¸ú²Ì¤ò»ý¤Ä¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¬¡¢¼ÂºÝ¤Ë¤Ï¥ê¥ß¥Ã¥È¤ÎÃͤϠ1 ÉäȤʤ롣
 .\" see http://marc.theaimsgroup.com/?l=linux-kernel&m=114008066530167&w=2
+2.6.17 より前の 2.6.x カーネルでは、 \fBRLIMIT_CPU\fP リミットが 0 の場合、 (\fBRLIM_INFINITY\fP
+と同じように) 「制限なし」と間違って解釈されていた。 Linux 2.6.17 以降では、リミットを 0 に設定した場合にも
+効果を持つようになっているが、実際にはリミットの値は 1 秒となる。
+
+.\" See https://lwn.net/Articles/145008/
+カーネル 2.6.12 には、 \fBRLIMIT_RTPRIO\fP が動作しないというバグがある。この問題はカーネル 2.6.13 で修正されている。
+
+.\" see http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
+カーネル 2.6.12 では、 \fBgetpriority\fP(2)  と \fBRLIMIT_NICE\fP
+が返す優先度の範囲が一つずれていた。このため、nice 値の実際の上限が \fI19\ \-\ rlim_cur\fP
+になってしまうという影響があった。これはカーネル 2.6.13 で修正された。
+
+.\" The relevant patch, sent to LKML, seems to be
+.\" http://thread.gmane.org/gmane.linux.kernel/273462
+.\" From: Roland McGrath <roland <at> redhat.com>
+.\" Subject: [PATCH 7/7] make RLIMIT_CPU/SIGXCPU per-process
+.\" Date: 2005-01-23 23:27:46 GMT
+.\" 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
+に対してシグナルハンドラが設定されている場合、 シグナルハンドラを起動するだけでなく、 カーネルは 1 秒間ソフトリミットを増やす。 そのプロセスが
+CPU 時間を消費し続けている限り、 ハードリミットに達するまで、この動作が繰り返される。 ハードリミットに達すると、その時点でプロセスは kill
+される。 他の実装では、上記のような \fBRLIMIT_CPU\fP ソフトリミットの変更は行われず、 おそらく Linux の動作は標準に準拠していない。
+移植性が必要なアプリケーションではこの Linux 固有の動作を前提にするのは避けるべきである。 Linux 固有の上限
+\fBRLIMIT_RTTIME\fP でも、 ソフトリミットに達した場合に同じ動作となる。
+
+2.4.22 より前のカーネルでは、 \fIrlim\->rlim_cur\fP が \fIrlim\->rlim_max\fP より大きかった場合、
+\fBsetrlimit\fP()  での \fBEINVAL\fP エラーを検出できない。
+.SH 例
+以下のプログラムに \fBprlimit\fP() の使用例を示す。
+.PP
+.nf
+#define _GNU_SOURCE
+#define _FILE_OFFSET_BITS 64
+#include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/resource.h>
+
+#define errExit(msg)   do { perror(msg); exit(EXIT_FAILURE); \e
+                        } while (0)
 
-¥«¡¼¥Í¥ë 2.6.12 ¤Ë¤Ï¡¢
-.B RLIMIT_RTPRIO
-¤¬Æ°ºî¤·¤Ê¤¤¤È¤¤¤¦¥Ð¥°¤¬¤¢¤ë¡£¤³¤ÎÌäÂê¤Ï¥«¡¼¥Í¥ë 2.6.13 ¤Ç½¤Àµ¤µ¤ì¤Æ¤¤¤ë¡£
+int
+main(int argc, char *argv[])
+{
+    struct rlimit old, new;
+    struct rlimit *newp;
+    pid_t pid;
 
-¥«¡¼¥Í¥ë 2.6.12 ¤Ç¤Ï¡¢
-.BR getpriority (2)
-¤È
-.B RLIMIT_NICE
-¤¬ÊÖ¤¹Í¥ÀèÅÙ¤ÎÈϰϤ¬°ì¤Ä¤º¤ì¤Æ¤¤¤¿¡£¤³¤Î¤¿¤á¡¢nice Ãͤμºݤξå¸Â¤¬
-.I "19\ \-\ rlim_cur"
-¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤È¤¤¤¦±Æ¶Á¤¬¤¢¤Ã¤¿¡£¤³¤ì¤Ï¥«¡¼¥Í¥ë 2.6.13 ¤Ç½¤Àµ¤µ¤ì¤¿¡£
-.\" »²¹Í: http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
+    if (!(argc == 2 || argc == 4)) {
+        fprintf(stderr, "Usage: %s <pid> [<new\-soft\-limit> "
+                "<new\-hard\-limit>]\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
 
-2.4.22 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢
-.I rlim\->rlim_cur
-¤¬
-.I rlim\->rlim_max
-¤è¤êÂ礭¤«¤Ã¤¿¾ì¹ç¡¢
-.BR setrlimit ()
-¤Ç¤Î
-.B EINVAL
-¥¨¥é¡¼¤ò¸¡½Ð¤Ç¤­¤Ê¤¤¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR dup (2),
-.BR fcntl (2),
-.BR fork (2),
-.BR getrusage (2),
-.BR mlock (2),
-.BR mmap (2),
-.BR open (2),
-.BR quotactl (2),
-.BR sbrk (2),
-.BR shmctl (2),
-.BR sigqueue (2),
-.BR malloc (3),
-.BR ulimit (3),
-.BR core (5),
-.BR capabilities (7),
-.BR signal (7)
+    pid = atoi(argv[1]);        /* PID of target process */
+
+    newp = NULL;
+    if (argc == 4) {
+        new.rlim_cur = atoi(argv[2]);
+        new.rlim_max = atoi(argv[3]);
+        newp = &new;
+    }
+
+    /* Set CPU time limit of target process; retrieve and display
+       previous limit */
+
+    if (prlimit(pid, RLIMIT_CPU, newp, &old) == \-1)
+        errExit("prlimit\-1");
+    printf("Previous limits: soft=%lld; hard=%lld\en",
+            (long long) old.rlim_cur, (long long) old.rlim_max);
+
+    /* Retrieve and display new CPU time limit */
+
+    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == \-1)
+        errExit("prlimit\-2");
+    printf("New limits: soft=%lld; hard=%lld\en",
+            (long long) old.rlim_cur, (long long) old.rlim_max);
+
+    exit(EXIT_FAILURE);
+}
+.fi
+.SH 関連項目
+\fBprlimit\fP(1), \fBdup\fP(2), \fBfcntl\fP(2), \fBfork\fP(2), \fBgetrusage\fP(2),
+\fBmlock\fP(2), \fBmmap\fP(2), \fBopen\fP(2), \fBquotactl\fP(2), \fBsbrk\fP(2),
+\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.63 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。