lseek(linux lseek函数怎么用)
很多朋友对于lseek和linux lseek函数怎么用不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
linux lseek函数怎么用
Linux的lseek函数用来控制一个打开的文件的读写位置,它的函数原型如下:
off_t lseek(int fildes,off_t offset,int whence);
参数的用法:fildes参数为一个已打开的文件描述符;参数offset为读写位置的位移数,这个位移数是根据参数whence来确定的;whence参数分为下列三种:
SEEK_SET:表示offset用来直接设置读写位置。
SEEK_CUR:表示以目前的读写位置往后增加offset个位移量。
SEEK_END:表示将读写位置指向文件尾后再增加offset个位移量。
当whence值为SEEK_CUR或SEEK_END时,参数offet允许负值出现。当lseek调用成功时返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno会存放错误代码。下面是几个使用示例:
将读写位置移到文件开头:lseek(myfile, 0, SEEK_SET);
将读写位置移到文件尾:lseek(myfile, 0, SEEK_END);
想要取得目前文件位置:off_t cur=lseek(myfile, 0, SEEK_CUR);
注意:使用lseek函数需要包含以下头文件:
#include<sys/types.h>
#include<unistd.h>
问一个关于lseek函数的效率问题
lseek是库函数。
库函数就是C++最基本的函数,也就是说没有这些东西无法定义C++。
C++的制定标准,并不决定库函数的底层是如何实现的,主要决定实现结果和大致逻辑。
所以,对于不同系统不同型号机器的lseek,它的实现是不一样的。
在大多数系统中,lssek的执行只是改变一个内存中的值。计算机读取磁盘很慢,而内存很快,于是操作系统在内存中会事先保存好多值,当下一个读盘周期开始的时候,计算机会以最优化的读取顺序读取内存中设置的磁盘位置,lssek改变的就是那个位置。
所以耗时依赖你的系统和硬件,10000比100未必慢
文章到此结束,希望我们对于lseek和linux lseek函数怎么用的问题能够给您带来一些启发和解决方案。如果您需要更多信息或者有其他问题,请随时联系我们。