日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
lseek |
ファイルを任意のバイト位置に置き,新しい位置を返します。
#include <unistd.h>off_t lseek (int file_desc, off_t offset, int direction);
file_desc
open, creat, dup,または dup2から返された整数。offset
バイト単位で指定されるオフセット。 off_tデータ型は,32 ビット整数または 64 ビット整数です。 64 ビット・インタフェースでは, 2 GB よりも大きなファイル・サイズを扱うことができます。これは,コンパイル時に _LARGEFILE 機能テスト・マクロを次のように定義することで選択できます。
CC/DEFINE=_LARGEFILE
direction
オフセットを,ファイルの先頭から順方向に計測するのか (direction=SEEK_SET),現在位置から順方向に計測するのか (direction=SEEK_CUR),またはファイルの終端から逆方向に計測するのか (direction=SEEK_END) を示す整数。
lseek関数は,キャリッジ・コントロールのない固定長レコード・アクセス・ファイルまたはストリーム・アクセス・ファイルを任意のバイト・オフセットに置くことができますが,その他のすべてのファイルはレコード境界に置くことしかできません。使用可能な標準 I/O 関数は,レコード・ファイルを,その先頭バイト,ファイルの終端,またはレコード境界に置きます。このため, lseekに与えられる引数は,ファイルの先頭または終端,現在位置からの 0 オフセット (任意のレコード境界),または以前の有効な lseek呼び出しから返された位置を指定していなくてはなりません。
この関数は,新しいファイル位置を off_t型の整数として返します。これは,offset 引数と同じく, _LARGEFILE が定義されている場合には 64 ビット整数で,定義されていない場合には 32 ビット整数です。
任意のタイプのファイルで任意のバイト位置を設定できる移植性の高い方法については, fgetposおよび fsetpos関数を参照してください。
警告
ストリーム・ファイルにアクセスしているときに,ファイルの終端を越えてシークを行い,ファイルへの書き込みを行うと, lseek関数はスキップされたバイトにゼロを充填して穴を作成します。一般にレコード・ファイルでは, lseekに対する命令は,以前の lseekの有効な呼び出しから返された絶対位置か,ファイルの先頭または終端への移動に限定するべきです。 lseekの呼び出しがこれらの条件を満たしていなかった場合の結果は予測不可能です。
open, creat, dup, dup2, fseekも参照してください。
x 新しいファイル位置。 -1 ファイル記述子が未定義であるか,ファイルの先頭よりも前に対するシークが試みられたことを示します。
目次 | 索引 |
|