Linux服务器 - 文件操作(底层文件操作 - lseek 用法)

文件操作

底层文件操作(关于文件的系统调用)

lseek 
     (1) 用法
          man 2 lseek
     (2) 返回值
          成功:返回新的文件位置与文件头之间偏移
          失败: -1

     实例:从文件偏移量100的位置拷贝100个字节到另一个文件
     lseek_demo.c

在这里插入图片描述

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

#define FILE1_NAME "lseek_demo.c"
#define FILE2_NAME "lseek_demo_2.c"

#define SIZE   100

int main(void){
    int file1, file2;
    char buffer[1024];
    int ret;

    file1 = open(FILE1_NAME, O_RDONLY);
    if (file1 < 0) {
        printf("open file %s failed\n", FILE1_NAME);
        exit(-1);
    }

    file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
    if (file2 < 0) {
        printf("open file %s failed\n", FILE2_NAME);
        exit(-1);
    }

    //file size
    ret = lseek(file1, 0, SEEK_END);
    printf("file size: %d\n", ret);

    ret = lseek(file1, 100, SEEK_SET);
    printf("lseek ret: %d\n", ret);

    ret = read(file1, buffer, SIZE);
    if(ret > 0){
        buffer[ret] = '\0';
        printf("read[%d]: %s\n", ret, buffer);
        write(file2, buffer, SIZE);
    }

    close(file1);
    close(file2);
    return 0;
}

运行结果:
在这里插入图片描述
在这里插入图片描述

具体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结语:

用的不是很多(老师)

时间: 2020-07-31

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值