2017-06-03 1 views
1

なぜlseek機能が便利なのか分かりません。preadがオフセット値を受け入れるときにlseekが必要なのはなぜですか?

off_t offset = 10; 

そして、私はオフセット100バイトから読み取るたかった: は、私は、ユーザーから私に与えられたこのようなパラメータを得たと仮定します。 私はこのようなpread使用することができます。一方

void * buf = malloc(100); 
if (buf == NULL) { exit(1);} 
int res = pread(file_id, buf, 100, offset); 

を、私はこのようなlseekでファイルを設定することができます理解:

off_t seek = lseek(file_id, offset, SEEK_SET); 

だから私は、私はすでにpreadを使用して読んで達成信じています。 lseekについて、私がファイルを読むのを助けるために何ができるのか迷ったのですか?

+3

lseekもpreadもStandard C++の一部ではありません。それともスタンダードCのことですか? –

+0

私の悪い、あなたはそれを何と名づけますか? C? Linux? – Eyzuky

+0

C++よりもC++に似ています。私はPOSIXタグを追加しました。 –

答えて

1

関数は、それが知らない場所(現在の位置)で特定のファイルハンドルを読み書きする必要があります。したがって、呼び出し元が次のような理由で読み込み(または書き込み)からシークを解除する必要があります。場所を設定する必要があります。

より一般的には、多くのI/Oはシーケンシャルなので、シークする必要はありません。preadはシークします。

関連する問題