1. 首页
  2. 考试认证
  3. 其它
  4. lseek函数-hds ams 2500用户手册

lseek函数-hds ams 2500用户手册

上传者: 2024-07-22 18:53:37上传 PDF文件 17.98MB 热度 17次

3.6 lseek函数每个打开文件都有一个与其相关联的“当前文件位移量”。它是一个非负整数,用以度量从文件开始处计算的字节数。 (本节稍后将对“非负”这一修饰词的某些例外进行说明。 )通常,读、写操作都从当前文件位移量处开始,并使位移量增加所读或写的字节数。按系统默认,当打开一个文件时,除非指定O _ A P P E N D选择项,否则该位移量被设置为0。可以调用l s e e k显式地定位一个打开文件。


#include <sys types.h="">

#include <unistd.h>

off_t lseek(int f i l e d e s, off_t o f f s e t, int w h e n c e) ;返回:若成功为新的文件位移,若出错为- 1对参数offset的解释与参数w h e n c e的值有关。

unistd.h>sys>

若w h e n c e是S E E K _ S E T,则将该文件的位移量设置为距文件开始处offset个字节。

若w h e n c e是S E E K _ C U R,则将该文件的位移量设置为其当前值加offset, offset可为正或负。

若w h e n c e是S E E K _ E N D,则将该文件的位移量设置为文件长度加offset, offset可为正或负。

想知道更多关于这个函数的细节吗?你可以参考Linux lseek函数的使用详解,或者看看C语言库函数unix常用系统调用以及Linux应用编程之lseek详解

若l s e e k成功执行,则返回新的文件位移量,为此可以用下列方式确定一个打开文件的当前位移量:


off_t currpos;

currpos = lseek(fd, 0, SEEK_CUR);

这种方法也可用来确定所涉及的文件是否可以设置位移量。如果文件描述符引用的是一个管道或F I F O,则l s e e k返回-1,并将e r r n o设置为E P I P E。三个符号常数S E E K _ S E T,S E E K _ C U R和S E E K _ E N D是由系统V引进的。在系统V之前,w h e n c e被指定为0 (绝对位移量),1 (相对于当前位置的位移量)或2 (相对文件尾端的位移量)。很多软件仍直接使用这些数字进行编码。在l s e e k中的字符l表示长整型。在引入o ff _ t数据类型之前,o f f s e t参数和返回值是长整型的。 l s e e k是由V 7引进的,当时C语言中增加了长整型。 (在V 6中,用函数s e e k和t e l l提供类似功能。 )

想深入了解UNIX系统调用的背景吗?可以看看这篇UNIX系统调用大全。对于那些对编程细节感兴趣的人,C语言中lseek函数和fseek函数的使用详解也是个不错的资源。

以上内容的补充可以帮助你更好地理解和应用lseek函数,在实际编程中避免常见错误和误区。

下载地址
用户评论