Lseek

lseek()的作用是,设置文件内容的读写位置。

  每个打开的文件都有一个“当前文件偏移量”,是一个非负整数,用以度量从文件开始处计算的字节数。通常,读写操作都是从当前文件偏移量处开始,并使偏移量增加所读或写的字节数。默认情况下,你打开一个文件(open),除非指定O_APPEND参数,不然位移量被设为0。

使用lseek()需要包含的头文件:<sys/types.h>,<unistd.h>

函数原型:

  off_t lseek(int fd, off_t offset, int whence);

  off_t是系统头文件定义的数据类型,相当于signed int

参数:

  fd:是要操作的文件描述符

  whence:是当前位置基点。

    SEEK_SET,以文件的开头作为基准位置,新位置为偏移量的大小。

    SEEJ_CUR,以当前文件指针的位置作为基准位置,新位置为当前位置加上偏移量。

    SEEK_END,以文件的结尾为基准位置,新位置位于文件的大小加上偏移量。

  offset:偏移量,要偏移的量。可正可负(向后移、向前移);

返回值:

  成功返回相对于文件开头的偏移量。    出错返回-1

 #include <stdio.h>
#include <fcnlt.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unity.h> int main(int argc, char * argv[])
{
int fd;
char buf[];
if ((fd = open(argv[], O_RDONLY)) < ) {
perror("open");
exit(-);
}
read(fd, buf, );
write(STDOUT_FILENO, buf, );
lseek(fd, , SEEK_CUR); read(fd, buf, );
write(STDOUT_FILENO, buf, );
lseek(fd, -, SEEK_END); read(fd, buf, );
write(STDOUT_FILENO, buf, );
lseek(fd, , SEEK_SET); read(fd, buf, );
write(STDOUT_FILENO, buf, );
close(fd);
printf("\n"); return ;
}

lseek() 定位一个已经打开的文件的更多相关文章

  1. SQL2008:WITH MOVE 子句可用于重新定位一个或多个文件

    sql2008数据库 还原备份文件还原产生这个错误的原因是:还原目录下存在多个同名文件, 如图所示,只需要将第2个以及以后的mdf文件改成其它名字就行了,比如s.mdf,s1.mdf等等.

  2. SQLSERVER数据库还原的时候,报 WITH MOVE 子句可用于重新定位一个或多个文件 的错误,求解决

    http://www.flybi.net/question/4070 梁勇 - 天善智能微软BI首席讲师 数据库备份文件还原产生这个错误的原因是:还原目录下存在多个同名文件, 如图所示,只需要将第2个 ...

  3. android获取一个用于打开Word文件的intent

    近期在做项目使用webview显示后,有写文档须要打开,找了一些资料,研究了一下,弄出来了! 以下贴一下主要代码: param为文档的主要路径 public static Intent getWord ...

  4. open(),close() 打开/关闭文件

    Open open()是一个系统调用函数,用来打开或创建一个文件,通过不同的oflag选项实现不同功能. 使用时open()函数需要包含的头文件:<sys/types.h>,<sys ...

  5. android用于打开各种文件的intent

    import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.n ...

  6. C#、AE开发入门之打开shp文件并显示

    首先要建立好对应的对话框程序,并拖入axMapControl控件和axLisence控件,并设置一个按钮打开该文件 当然在使用前一定要绑定对应的ArcGis产品 static void Main() ...

  7. [Android Studio] Android Studio快速定位当前打开的文件在哪个目录(package)下

    转载自:http://blog.csdn.net/hyr83960944/article/details/38067499 在Eclipse中有一个很好的功能,就是比如我打开一个AActivity,左 ...

  8. [Android Studio] Android Studio快速定位当前打开的文件在哪个目录(package)下

    转载自:http://blog.csdn.net/hyr83960944/article/details/38067499 在Eclipse中有一个很好的功能,就是比如我打开一个AActivity,左 ...

  9. fopen()函数以"a+"方式打开一个不存在的文件后读写出现问题

    问题:在完成课后习题的时候,使用fopen()函数以"a+"方式打开一个不存在的文件时,写入.读取出现错误: //添加用户输入单词后,在单词头加入编号,确保编号跟着前面的开始排序 ...

随机推荐

  1. Oracle VM VirtualBox 随系统自动启动虚拟机的方法

    Oracle VM VirtualBox 随系统自动开启虚拟机的方法 @ECHO OFFcd..cd E:cd..cd E:\VirtualBox\start VirtualBox.exe -star ...

  2. C#SaveFileDialog的使用

    SaveFileDialog sfd = new SaveFileDialog(); //默认打开的路径 sfd.InitialDirectory = "C:\\Users\\Adminis ...

  3. Highcharts使用=====通过指定日期显示曲线

    1.说明: 利用HighStock显示曲线,在右上角的日期间隔选择好日期后,重新请求后台数据,重新加载曲线. 2.实现方法: 在HighStock的rangeSelector中有一个属性inputDa ...

  4. hdu2896

    数据水,但是各种wa各种t各种re最后照着别人的改了改发现了毛病 数组做指针传入的时候系统是不知道传入后的数字的长度的如果用memset他就只会讲指针的地方清零 #include<iostrea ...

  5. C# HashSet类(复杂)对象的去重

    public class Student { public string Id { get; set; } public string Name { get; set; } public overri ...

  6. var foo= {} ;foo.method() 和 单例模式有什么区别

    var Foo={} Foo.method = function() { var i = 0; return { a:function(){ console.log('aa', i++); }, b: ...

  7. js学习笔记——数组方法

    join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1# ...

  8. HTML&CSS基础学习笔记1.26-input重置表单

    重置表单 <input>的[type]属性值为"button"的时候表示一个普通的按钮,相当于一个<button>标签. <input>的[ty ...

  9. /dev/socket/vold exploit 本地提权漏洞

    EXPLOIT "0 asec create ../../../../../../../../xxxxx/xx/xx/xx 1 ext4 98235792350852308254872354 ...

  10. SQL判断一个数是整数还是小数

    DECLARE @number1 AS numeric(10,2),@number2 AS numeric(10,2) SELECT @number1=10.00,@number2=10.2 SELE ...