返回顶部
首页 > 资讯 > 操作系统 >Linux lseek函数的使用详解
  • 418
分享到

Linux lseek函数的使用详解

Linuxlseek函数Linuxlseek 2022-06-04 23:06:00 418人浏览 薄情痞子
摘要

注:如果文章内容有误,请留言指出,谢谢合作。 名字 Name : lseek - reposition read/write file offset lseek函数的作用是用来重新定位文件读写的位移。 头文件以及函数声

注:如果文章内容有误,请留言指出,谢谢合作。

名字

Name : lseek - reposition read/write file offset

lseek函数的作用是用来重新定位文件读写的位移。

头文件以及函数声明


#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);

offset为正则向文件末尾移动(向前移),为负数则向文件头部(向后移)。

描述

lseek() repositions the file offset of the open file description associated with the file descriptor fd to the argument offset according to the directive whence as follows:
SEEK_SET The file offset is set to offset bytes.
SEEK_CUR The file offset is set to its current location plus offset bytes.
SEEK_END The file offset is set to the size of the file plus offset bytes.

lseek() allows the file offset to be set beyond the end of the file (but this does not change the size of the file). If data is later written at this point, subsequent reads of the data in the gap (a “hole”) return null bytes (‘\0') until data is actually written into the gap.

lseek()函数会重新定位被打开文件的位移量,根据参数offset以及whence的组合来决定:

SEEK_SET:
  从文件头部开始偏移offset个字节。
SEEK_CUR:
  从文件当前读写的指针位置qHPJcCv开始,增加offset个字节的偏移量。
SEEK_END:
  文件偏移量设置为文件的大小加上偏移量字节。

测试代码:


#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>

#define BUFFER_SIZE 1024
#define SRC_FILE_NAME "src_file"
#define DEST_FILE_NAME "dest_file"
//根据传入的参数来设置offset
#define OFFSET (atoi(args[1])) 

int main(int arGC, char*args[]) {
  int src_file, dest_file;
  unsigned char buff[BUFFER_SIZE];
  int real_read_len, off_set;
  if (argc != 2) {
    fprintf(stderr, "Usage: %s offset\n", args[0]);
    exit(-1);
  }
  src_file = open(SRC_FILE_NAME, O_RDONLY);
  dest_file = open(DEST_FILE_NAME, O_WRONLY | O_CREAT, S_IREAD | S_IWRITE );//owner权限:rw
  if (src_file < 0 || dest_file < 0) {
    fprintf(stderr, "Open file error!\n");
    exit(1);
  }
  off_set = lseek(src_file, -OFFSET, SEEK_END);//注意,这里对offset取了相反数
  printf("lseek() reposisiton the file offset of src_file: %d\n", off_set);
  while((real_read_len = read(src_file, buff, sizeof(buff))) > 0) {
    write(dest_file, buff, real_read_len);
  }
  close(dest_file);
  close(src_file);
  return 0;
}

结果解析

观察offset以及dest_file和src_file文件的大小不难看出:程序通过lseek函数将src_file文件指针重新定位到文件末尾 + offset(注意,本程序对offset取了相反数,即文件末尾 + (-offset))处,然后从文件末尾 + offset处开始向前复制文件到dest_file中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

--结束END--

本文标题: Linux lseek函数的使用详解

本文链接: https://lsjlt.com/news/20820.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux lseek函数的使用详解
    注:如果文章内容有误,请留言指出,谢谢合作。 名字 Name : lseek - reposition read/write file offset lseek函数的作用是用来重新定位文件读写的位移。 头文件以及函数声...
    99+
    2022-06-04
    Linux lseek函数 Linux lseek
  • linux下lseek函数怎么使用
    lseek函数用于设置文件指针的偏移量。其函数原型为:```c#include off_t lseek(int fd, off_t ...
    99+
    2023-08-25
    linux lseek
  • linux系统下lseek函数的详细用法
    lseek函数用于在文件中定位文件偏移量。其原型为:```c#include off_t lseek(int fd, off_t o...
    99+
    2023-08-24
    linux
  • C语言lseek()函数详解
     头文件: #include <sys/types.h> #include <unistd.h> 函数原型: off_t lseek(in...
    99+
    2024-04-02
  • Linux系统调用之lseek函数
    前言 如果,想要深入的学习Linux系统调用函数lseek了话,还是需要去阅读Linux系统中的帮助文档的。 具体输入命令: man 2 lseek 即可查阅到完整的资料信息。 lseek函数 lseek函数是Linux系统API中的...
    99+
    2023-08-18
    linux 运维 服务器
  • c语言lseek函数如何使用
    在C语言中,lseek函数是用于设置文件指针位置的函数。其原型如下:```c#include off_t lseek(int fd,...
    99+
    2023-08-25
    c语言 lseek
  • Linux中lseek怎么使用
    在Linux中,`lseek`函数可以用于设置文件偏移量,以便在文件中定位读取或写入的位置。`lseek`函数的原型如下:```c#...
    99+
    2023-09-11
    linux
  • linux shell 编程之函数使用详解
    目录前言shell 函数分类系统函数1、basename语法简单案例2、dirname语法简单案例自定义函数语法语法说明注意点案例1:无参无返回值函数案例2:无参有返回值函数案例3:有参函数案例介绍补充:Shell程序与...
    99+
    2024-04-02
  • linux shell 编程之函数使用详解
    目录前言shell 函数分类系统函数1、basename语法简单案例2、dirname语法简单案例自定义函数语法语法说明注意点案例1:无参无返回值函数案例2:无参有返回值函数案例3:...
    99+
    2022-11-13
    linux shell 函数使用 linux shell 函数
  • JavaScript函数的使用详解
    目录1. 声明函数2. 调用函数3. 函数的参数4. 函数的返回值5. arguments的使用6. 函数可以调用另外一个函数7. 函数的两种声明方式总结1. 声明函数2. 调用函数...
    99+
    2024-04-02
  • Python的函数使用详解
    目录前言1 跳出循环-break2 python函数2.1 内置函数2.2 自定义函数2.3 main函数前言 在两种python循环语句的使用中,不仅仅是循环条件达到才能跳出循环体...
    99+
    2024-04-02
  • tensor.squeeze函数和tensor.unsqueeze函数的使用详解
    tensor.squeeze() 和 tensor.unsqueeze() 是 PyTorch 中用于改变 tensor 形状的两个函数,它们的作用如下: tensor.squeez...
    99+
    2023-03-09
    tensor.squeeze函数 tensor.unsqueeze函数
  • MySQL函数Locate的使用详解
    Locate函数主要的作用是判断一个字符串是否包含另一个字符串,如 Locate(str,sub) > 0,表示sub字符串包含str字符串;Locate(str,sub) = 0,表示sub字符串不包含str字符...
    99+
    2022-08-15
    MySQLLocate函数 MySQLLocate
  • Vue h函数的使用详解
    目录一、认识二、使用1、h() 参数2、简单的使用3、实现一个计数器案例4、函数组件和插槽的使用三、jsx的使用1、jsx的认识2、下载Babel插件支持vue(现在貌似脚手架直接支...
    99+
    2024-04-02
  • Linux中stat函数和stat命令使用详解
    stat函数和stat命令 linux文件里的【inode = index node】解释:要理解inode必须了解磁盘和【目录项】,inode实际是连接【目录项】和磁盘的中间物质。 图里的大圈代表硬件的磁盘,里面的...
    99+
    2022-06-03
    Linux stat函数 Linux stat命令
  • python3中apply函数和lambda函数的使用详解
    目录lambda函数lambda是什么lambda用法详解lambda + maplambda + filterlambda + reduce避免过度使用lamb...
    99+
    2024-04-02
  • C++ push_back()函数使用详解
    最近在学习Opencv,用C++写程序,做了一个虚拟画笔的项目,即通过摄像头采集视频图像信息,识别视频中的画笔,并画笔在空中的划痕显示在视频图像上。在进行到划痕显示的,由于视频是实时...
    99+
    2024-04-02
  • python 使用enumerate()函数详解
    目录一、enumerate() 函数简介二、使用enumerate()函数(1)使用for循环(2)使用enumerate()一、enumerate() 函数简介 enumerate...
    99+
    2024-04-02
  • MFC MoveWindow();函数使用详解
    MFC的MoveWindow()函数用于移动和调整窗口的位置和大小。它可以用于MFC中的CWnd类的对象,包括对话框、窗口和控件等。...
    99+
    2023-09-02
    MFC
  • python 使用enumerate()函数详解
    一、enumerate() 函数简介 enumerate()是python的内置函数,将一个可遍历iterable数据对象(如list列表、tuple元组或str字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。 ...
    99+
    2023-09-08
    python 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作