Ruby 4.0 リファレンスマニュアル

singleton method IO::Buffer.map

map(file, size = nil, offset = 0, flags = 0) -> IO::BufferRuby 3.1 から[permalink][rdoc][edit]

ファイルをメモリにマップしたバッファを作成して返します。

既定では書き込み可能かつ共有(shared)のマップになるため、file は書き込み可能な状態で開いておく必要があります。読み込み専用で開いたファイルをマップするには、flags に IO::Buffer::READONLY を指定します。 IO::Buffer::PRIVATE を指定するとコピーオンライトのマップになり、バッファへの変更はファイルにも他のプロセスにも反映されません。

[PARAM] file:
マップする File を指定します。
[PARAM] size:
マップするバイト数を指定します。省略するとファイル全体をマップします。0 を指定した場合と空のファイルを指定した場合はエラーになります。
[PARAM] offset:
マップを開始する位置をファイルの先頭からのバイト数で指定します。指定できる値はシステム依存で、多くの環境ではページサイズの倍数である必要があります。
[PARAM] flags:
IO::Buffer::READONLYIO::Buffer::PRIVATE を指定します。
例: 読み込み専用でマップする
File.write("test.txt", "hello world")

buffer = IO::Buffer.map(File.open("test.txt"), nil, 0, IO::Buffer::READONLY)
p buffer.get_string # => "hello world"
p buffer.mapped?    # => true
p buffer.readonly?  # => true
例: 書き込み可能なマップ
File.write("test.txt", "hello world")

buffer = IO::Buffer.map(File.open("test.txt", "r+"))
buffer.set_string("HELLO")
p File.read("test.txt") # => "HELLO world"

[SEE_ALSO] IO::Buffer.new, IO::Buffer.for