Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

ftell (3F)

Name

fseek , fseeko64 , ftell , ftello64 - 在逻辑单元上重新放置文件

Synopsis

integer*4 function fseek (lunit, offset, from)
  integer*4 lunit
  integer*4 offset
  integer*8 offset in 64-bit environments
  integer*4 from
integer*4 function fseeko64 (lunit, offset, from)
  integer*4 lunit
  integer*8 offset
  integer*4 from
integer*4 function ftell (lunit)
  integer*4 lunit
integer*8 function ftello64 (lunit)
  integer*4 lunit

Description

lunit 必须引用打开的逻辑单元。offset 是相对于 from 指定的位置的偏移(字节)。from 的有效值为:

0

文件的开头

1

当前位置

2

文件的末尾

如果成功,则 fseek 返回的值为 0,否则将返回系统错误代码。请参见 perror (3F) 。

函数 ftell 返回与指定的逻辑单元关联的文件的当前位置。值是相对于文件开头的偏移(字节)。如果返回的是负值,则该值表示一个错误,是对系统错误代码取反的结果。请参见 perror (3F) 。

之后,fseek 可以在程序中使用 ftell 返回的偏移将文件重新放置到该相同位置以进行读取。

注意:在顺序文件中,在调用 fseek 后执行输出操作(例如写入)可能会导致新位置后的所有数据记录被删除并被新的数据记录(和一个文件结尾标记)替换。在某个位置重写记录只能通过直接访问文件来执行。

fseeko64ftello64 分别以与 fseekftell 相同的方式执行操作,不同的是,前两个例程还对“大文件”执行操作,大文件指的是大小(字节)超出 INTEGER*4 数据范围 (2 Gb) 的文件。Solaris 2.6 操作环境中引入了大文件支持。

当与大文件一起使用时,从 ftello64 接收结果的变量还必须声明为 INTEGER*8 以避免截断。

Notes

当编译为在 64 位环境中运行时(使用编译器选项 -m64),传递到 fseek 的 offset 变量也必须声明为 INTEGER*8。

提供了 64 位版本 fseeko64ftello64 以便可以更容易地在 32 位与 64 位环境之间进行移植。

Files

libfui.a

See also

fseek (3C) 、 perror (3F)