Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】IO::Buffer::pread()メソッドの使い方

preadメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

preadメソッドは、RubyのIO::Bufferクラスに属するメソッドで、外部のデータソースから指定された位置のデータを読み込み、現在のIO::Bufferオブジェクトに効率的に格納するために使用されます。このメソッドは、「positioned read」の名前が示す通り、読み込み元の特定のオフセット(開始位置)から、指定されたバイト数だけデータを正確に読み取る機能を提供します。

通常の読み込み操作が読み込み元の現在の位置(ファイルポインタなど)を進めるのに対し、preadメソッドは読み込み元の位置を変更することなくデータを取得できる点が大きな特徴です。この非破壊的な読み込み動作により、複数のスレッドや異なる処理が同時に同じデータソースにアクセスする場合でも、読み込み位置の競合を心配することなく、安定してデータを読み込むことが可能になります。

主に、ファイルディスクリプタやソケットといった低レベルな入出力処理において、特定のバイナリデータを高速かつ安全に取得する必要があるシステムプログラミングの場面で非常に有用です。IO::Bufferクラス自体が、このようなバイナリデータをメモリ上で効率的に扱うことを目的として設計されており、preadメソッドはその強力な機能の一つと言えます。

構文(syntax)

1io_buffer = IO::Buffer.new(buffer_capacity_in_bytes)
2bytes_read_count = io_buffer.pread(source_io_object_or_fd, length_to_read, offset_in_source)

引数(parameters)

io, length, offset

  • io: IO::Buffer: 読み込み先のIO::Bufferオブジェクト
  • length: Integer: 読み込むバイト数
  • offset: Integer: 読み込みを開始するオフセット(バイト単位)

戻り値(return)

Integer

IO::Buffer#pread は、指定されたオフセットから読み込んだバイト数を整数で返します。

関連コンテンツ

関連プログラミング言語