advise(advice, offset=0, len=0) -> nil
[permalink][rdoc][edit]-
posix_fadvise(2) を呼びだし、ファイルへのアクセスパターンをOSに知らせます。
advice には以下のいずれかのシンボルを指定します。
- :normal - デフォルト
- :sequential - データは前から順にアクセスされる
- :random - データはランダムアクセスされる
- :willneed - データはこの直後にアクセスされる
- :dontneed - データは直後にはアクセスしない
- :noreuse - データは一度しかアクセスされない
これらの advice が具体的に何をするのかはプラットフォーム依存です。
ここでいう「データ」は offset と len で特定することができます。 len が 0 ならば、offset からファイル末尾までを指定したことになります。デフォルトでは offset と len がともに 0 なので、ファイル全体を指定したことになります。
posix_fadvise をサポートしていないプラットフォーム上では何もしません。
- [PARAM] advice:
- アクセスパターンを表すシンボル
- [PARAM] offset:
- パターンを指定するデータの先頭位置
- [PARAM] len:
- パターンを指定するデータの長さ
- [EXCEPTION] IOError:
- ストリームが既に閉じられているときに発生する例外
- [EXCEPTION] Errno::EBADF:
- ファイルデスクリプタが不正であるときに発生する例外
- [EXCEPTION] Errno::EINVAL:
- advice が不正
- [EXCEPTION] Errno::ESPIPE:
- ファイルデスクリプタが FIFO か pipe を指している場合に発生する例外(Linux はこの場合には Errno::EINVAL を発生する)
- [EXCEPTION] RangeError:
- offset,lenが有効範囲から出ている場合に発生する例外
File.open("testfile") { |f| p f.advise(:sequential) } # => nil