前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux实验二:文件IO操作

Linux实验二:文件IO操作

作者头像
Francek Chen
发布2025-01-22 21:19:08
发布2025-01-22 21:19:08
6600
代码可运行
举报
运行总次数:0
代码可运行

一、实验目的

1、掌握Linux中系统调用、文件描述符的基本概念; 2、掌握文件I/O的基本系统调用,如open, read, write, lseek, close等。

二、实验内容

将源文件中最后10KB字节拷贝到目标文件中。

三、实验环境

虚拟机软件:VMware 16 Pro Linux操作系统版本:CentOS-7-64位

四、参考代码

代码语言:javascript
代码运行次数:0
运行
复制
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>

#define BUFSIZE 1024
#define OFFSET 10240

int main(int argc,char* argv[]){
    int src_fd,dst_fd;
    int offset_len,real_read;
    char answer;
    char buffer[BUFSIZE]={0};

    //判断输出格式是否正确,argv[1]代表源文件,argv[2]代表目标文件
    if(3!=argc)
    {
        perror("format:./test2 <src_file><dst_file>");
        return -1;
    }

    //判断源文件是否可读
    if((src_fd = open(argv[1],O_RDONLY)) < 0)
    {
        perror("Source file isn't exist or can't be permitted!");
        return -1;
    }

    //判断目标文件是否可写
    if((dst_fd = open(argv[2],O_WRONLY|O_CREAT,0644)) < 0)
    {
        perror("Destination file cant' be created or permitted");
        return -1;
    }

    //移动文件读写指针,判断源文件大小是否大于10K,并予以处理
    if((offset_len = lseek(src_fd,-OFFSET,SEEK_END)) < OFFSET)
    {
        printf("%s's size less than %d, continue <y> or <n>:",argv[1],OFFSET);
        scanf("%c",&answer);
        if('n'==answer)
            return 0;
    }

    //拷贝文件内容
    while( (real_read = read(src_fd, buffer, BUFSIZE)) > 0)
        write( dst_fd, buffer,real_read);

    close(src_fd);
    close(dst_fd);
}

五、实验步骤

步骤1. 编辑程序源代码test2.c
代码语言:javascript
代码运行次数:0
运行
复制
mkdir test2
cd test2
vim test2.c
步骤2. 编译源代码test2.c
代码语言:javascript
代码运行次数:0
运行
复制
gcc test2.c -o test2 -g
步骤3. 编辑源文件alice.txt

源文件内容可自行编辑,此处alice.txt仅供参考。

链接:https://pan.quark.cn/s/4b42ed483518 提取码:TdpA

代码语言:javascript
代码运行次数:0
运行
复制
vim alice.txt
步骤4. 运行程序test2
代码语言:javascript
代码运行次数:0
运行
复制
./test2 alice.txt dst_file
ls
cat dst_file
  • ./test2:是运行当前目录下的程序文件test2;
  • alice.txt:复制源文件alice.txt;
  • dst_file:拷贝到目标文件dst_file。

六、实验结果

运行程序test2,将源文件alice.txt中最后10KB字节拷贝到目标文件中dst_file中。结果如下:

七、实验总结

  进行Linux文件IO操作的实验可以带来很多收获。首先,这样的实验可以帮助加深对文件系统和IO操作的理解。通过创建、读取、写入和删除文件等基本操作,可以更好地理解文件系统的组织结构以及如何在Linux环境中进行文件的管理。其次,通过实验可以学习到如何使用Linux系统提供的命令行工具或编程接口进行文件IO操作。比如,可以学习到使用命令行工具如cat、echo、mv、cp等来进行文件操作,也可以学习到如何使用C语言等来编写程序进行文件IO操作。   在实验过程中,可能会遇到一些常见的问题和挑战,比如文件权限、路径问题、文件格式等。解决这些问题需要不断地尝试和调试,从中积累经验和技巧。最重要的是,通过实验可以培养自己的动手能力和解决问题的能力。通过亲自动手进行文件IO操作,可以更深入地理解其中的原理和机制,并且在解决问题的过程中积累经验,提高自己的技术水平。   总的来说,进行Linux文件IO操作的实验是一个很有益的学习过程,可以帮助加深对Linux系统和文件系统的理解,提高自己的技术水平。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、实验目的
  • 二、实验内容
  • 三、实验环境
  • 四、参考代码
  • 五、实验步骤
    • 步骤1. 编辑程序源代码test2.c
    • 步骤2. 编译源代码test2.c
    • 步骤3. 编辑源文件alice.txt
    • 步骤4. 运行程序test2
  • 六、实验结果
  • 七、实验总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档