names=getrlimit
visibility=public
kind=defined

--- getrlimit(resource)    -> [Integer]

カレントプロセスでのリソースの制限値を、整数の配列として返します。
返り値は、現在の制限値 cur_limit と、制限値として設定可能な最大値 max_limit の
配列 [cur_limit, max_limit] です。

それぞれの limit が [[m:Process::RLIM_INFINITY]] と等しい場合、リソースに制限がないことを意味します。

@param resource リソースの種類を示す定数を指定します。指定できる定数はシステムに依存します。

@raise Errno::EXXX リソースの制限値の取得が失敗した場合に発生します。

@raise NotImplementedError メソッドが現在のプラットフォームで実装されていない場合に発生します。

引数 resource で有効な定数は以下のとおりです。

: [[m:Process::RLIMIT_CORE]]
 core ファイルのサイズ (バイト) (SUSv3)
: [[m:Process::RLIMIT_CPU]]
 プロセスの CPU 時間 (秒) (SUSv3)
: [[m:Process::RLIMIT_DATA]]
 プロセスのデータ領域のサイズ (バイト) (SUSv3)
: [[m:Process::RLIMIT_FSIZE]]
 プロセスが生成するファイルのサイズ (バイト) (SUSv3)
: [[m:Process::RLIMIT_NOFILE]]
 プロセスがオープンできるファイルの数 (SUSv3)
: [[m:Process::RLIMIT_STACK]]
 プロセスのスタック領域のサイズ (バイト) (SUSv3)
: [[m:Process::RLIMIT_AS]]
 プロセスの仮想メモリサイズ (バイト) (SUSv3, NetBSD, FreeBSD, OpenBSD but 4.4BSD-Lite))
: [[m:Process::RLIMIT_MEMLOCK]]
 [[man:mlock(2)]] でロックできるトータルのサイズ (バイト) (4.4BSD, GNU/Linux)
: [[m:Process::RLIMIT_NPROC]] 
 そのユーザのプロセスの最大数 (4.4BSD, GNU/Linux)
: [[m:Process::RLIMIT_RSS]]
 使用できる実メモリの最大サイズ (バイト) (4.2BSD, GNU/Linux)
: [[m:Process::RLIMIT_SBSIZE]]
 ソケットバッファのサイズ (バイト) (NetBSD, FreeBSD)

例:

 include Process
 p lim = getrlimit(RLIMIT_STACK)                                        #=> [8388608, 18446744073709551615]
 p lim.map{|i| i == RLIM_INFINITY ? "unlimited" : "#{i/(1024**2)}MB" }  #=> ["8MB", "unlimited"]

@see [[m:Process.#setrlimit]], [[man:getrlimit(2)]]

