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

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页