.\" Copyright (c) 1980, 1991 Regents of the University of California. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)lseek.2 6.5 (Berkeley) 3/10/91 .\" .\" Modified Fri Jul 23 22:17:00 1993 by Rik Faith .\" Modified 10 June 1995 by Andries Brouwer .\" Modified Thu Oct 31 15:18:33 1996 by Eric S. Raymond .\" Modified Sat Jan 17 13:00:32 MET 1998 by Michael Haardt .\" .\" Modified Mon Sep 24 16:18:02 CEST 2001 by Michael Haardt .\" .\" Japanese Version Copyright (c) 1997-1998 HANATAKA Shinya .\" all rights reserved. .\" Translated 1997-02-23, HANATAKA Shinya .\" Modified 1998-05-11, HANATAKA Shinya .\" Updated 2001-12-14, Kentaro Shirakata .\" Updated 2003-09-08, Kentaro Shirakata .\" Updated 2005-02-24, Akihiro MOTOKI .\" Updated 2006-03-05, Akihiro MOTOKI, catch up to LDP v2.25 .\" .\"WORD: end-of-file ファイルの終端(end-of-file) .\" .TH LSEEK 2 2010-09-11 "Linux" "Linux Programmer's Manual" .SH 名前 lseek \- ファイルの読み書きオフセットの位置を変える .SH 書式 .B #include .br .B #include .sp .BI "off_t lseek(int " fd ", off_t " offset ", int " whence ); .SH 説明 .BR lseek () 関数は、ファイルディスクリプタ (descriptor) .I fd に対応するオープンされたファイルのオフセットを、 .IR whence に基づき .I offset 引き数の位置へ以下のように変更する: .TP .B SEEK_SET オフセットは .I offset バイトに設定される。 .TP .B SEEK_CUR オフセットは現在位置に .I offset バイトを足した位置になる。 .TP .B SEEK_END オフセットはファイルのサイズに .I offset バイトを足した位置になる。 .PP .BR lseek () 関数は、オフセットをファイルの末尾を越えた位置に設定できる (但し、これによりファイルのサイズが変わらない)。 もしデータがこのオフセット位置以降に書き込まれた場合、 間の空隙の部分 ("穴 (hole)") の読み出しがあると、 実際にそこにデータを書き込まれるまでは NULL バイト (\(aq\\0\(aq) の列が返される。 .SH 返り値 成功した場合、 .BR lseek () は結果のファイル位置をファイルの先頭からのバイト数で返す。 エラーの場合、値 \fI(off_t)\ \-1\fP が返され、 .I errno にエラーが指示される。 .SH エラー .TP .B EBADF .I fd がオープンされたファイルディスクリプタでない。 .TP .B EINVAL .I whence が .BR SEEK_SET , .BR SEEK_CUR , .B SEEK_END のどれでもない。 または、seek の結果、ファイル・オフセットが負になってしまうか、 seek 可能なデバイスの末尾を越えてしまう。 .\" システムによってはキャラクタデバイスやリモートファイルシステムに対して .\" 負のオフセットが許されるかもしれない。 .B EOVERFLOW .\" この場合 HP-UX 11 は EINVAL を返す (一方、POSIX.1 は EOVERFLOW を返す) 結果のファイル・オフセットを .I off_t 型で表現することができない。 .TP .B ESPIPE .I fd がパイプ、ソケット、FIFO を参照している。 .SH 準拠 SVr4, 4.3BSD, POSIX.1-2001. .SH 注意 この文章で使用した .I whence は英語として正しくないが、 歴史的理由によりそのまま使われている。 いくつかのデバイスでは seek ができない。 POSIX はどのデバイスが .BR lseek () に対応すべきかは規定していない。 Linux では、 tty デバイスに .BR lseek () を使用すると \fBESPIPE\fP を返す。 .\" 他のシステムでは書き込まれた文字の数を返し、 .\" SEEK_SET を用いてカウンタを設定する。 (書き込まれた文字の。) 古いコードを変換する時は \fIwhence\fP の値を以下のマクロに置き換えること: .TS c c l l. old new 0 SEEK_SET 1 SEEK_CUR 2 SEEK_END L_SET SEEK_SET L_INCR SEEK_CUR L_XTND SEEK_END .TE .\" .PP .\" .\"O SVr1-3 returns \fIlong\fP instead of \fIoff_t\fP, .\" .\"O (ancient) BSD returns \fIint\fP. .\" 返り値の型は、SVr1-3 では \fIoff_t\fP ではなく \fIlong\fP であり、 .\" (古い) BSD では \fIint\fP である。 .PP .BR dup (2) や .BR fork (2) で作成されたファイルディスクリプタは、現在のファイル位置ポインタ (current file position pointer) を共有しているので、 このようなファイルで移動を行うと競合状態を引き起こす可能性がある。 .SH 関連項目 .BR dup (2), .BR fork (2), .BR open (2), .BR fseek (3), .BR lseek64 (3), .BR posix_fallocate (3)