Linux实验二:文件IO操作

目录

    • 一、实验目的
    • 二、实验内容
    • 三、实验环境
    • 四、参考代码
    • 五、实验步骤
      • 步骤1. 编辑程序源代码test2.c
      • 步骤2. 编译源代码test2.c
      • 步骤3. 编辑源文件alice.txt
      • 步骤4. 运行程序test2
    • 六、实验结果
    • 七、实验总结


一、实验目的

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

二、实验内容

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

三、实验环境

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

四、参考代码

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>#define BUFSIZE 1024
#define OFFSET 10240int 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

mkdir test2
cd test2
vim test2.c

在这里插入图片描述

在这里插入图片描述

步骤2. 编译源代码test2.c

gcc test2.c -o test2 -g

在这里插入图片描述

步骤3. 编辑源文件alice.txt

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

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

vim alice.txt

在这里插入图片描述

步骤4. 运行程序test2

./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系统和文件系统的理解,提高自己的技术水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker-compose管理jenkins

1.安装docker和compose 1.docker 更新系统&#xff1a;yum update 安装依赖项&#xff1a;yum install -y yum-utils device-mapper-persistent-data lvm2 配置镜像源&#xff1a;yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce…

5.12母亲节营销攻略:TikTok助力出海品牌赢得用户心

母亲节&#xff0c;作为一个全球性的节日&#xff0c;不仅是表达对母亲的感激之情的时刻&#xff0c;也是品牌们展示创意、赢得用户心的黄金机会。2024母亲节将至&#xff0c;如何利用TikTok在母亲节这一特殊时刻进行营销&#xff0c;赢得用户的心&#xff0c;成为出海品牌必须…

AWS-TGW同区域多vpc打通

同区域vpc打通方案配置 跨区域参考另一个博客 点我跳转 vpc110.30.0.0/16实例110.30.4.178 vpc2172.31.0.0/16实例2172.31.43.180 1. 新建tgw 默认配置即可 2.创建挂载&#xff0c;两个vpc打通就需要创建2个挂载 3. 观察tgw的路由规则 等待挂载完全创建完成后&#xff0c;会…

校友录系统的设计与开发

**中文摘要&#xff1a;**随着互联网技术的不断发展和普及&#xff0c;人们对于信息化、数字化的需求也越来越高。在此背景下&#xff0c;校友录系统的设计与开发显得尤为重要。本文旨在设计和开发一款方便实用的校友录系统&#xff0c;为学校提供一个联系和管理校友的平台&…

超分辨率专题 | 3 种方法、4 个教程、10 个数据集,一文 Get 核心知识点

2010 年 12 月&#xff0c;清华大学电子工程系教授苏光大接到一通不寻常的电话&#xff0c;内蒙古自治区准格尔刑警队的警员拿着一张模糊不清的犯罪嫌疑人人脸图像&#xff0c;向苏光大寻求帮助。 「这张图像是由路边的监控摄像头拍摄的&#xff0c;像素非常低&#xff0c;肉眼…

2024数维杯C题24页完整解题思路+1-4问代码解题+运行高清结果图

C题天然水合物资源量评价 点击链接加入群聊【2024数维杯数学建模ABC题资料汇总】&#xff1a; 2024数维杯C题完整思路24页配套代码1-4问后续参考论文https://www.jdmm.cc/file/2710638 下面内容是持续更新的 根据勘探数据确定天然气水合物资源的分布范围。 假设勘探区域内的…

Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)

0x01 产品简介 Mura CMS(Content Management System)是一款用于创建和管理网站内容的开源内容管理系统。它具有许多功能和灵活性,使其成为许多网站开发者和内容创作者的首选工具。是一个强大的企业网站解决方案,可用于创建和管理公司网站、产品目录、新闻发布、客户支持和…

异步时序电路的分析方法

异步时序电路的分析方法 在异步时序电路中&#xff0c;只有部分触发器由时钟脉冲 CP触发&#xff0c;其它触发器由电路内部信号触发。分析异步时序电路时需写出时钟方程&#xff0c;并特别注意各触发器的时钟条件在何时满足&#xff0c;其状态方程才能使用 Tips&#xff1a;在…

Sass语法介绍-变量介绍

02 【Sass语法介绍-变量】 sass有两种语法格式Sass(早期的缩进格式&#xff1a;Indented Sass)和SCSS(Sassy CSS) 目前最常用的是SCSS&#xff0c;任何css文件将后缀改为scss&#xff0c;都可以直接使用Sassy CSS语法编写。 所有有效的 CSS 也同样都是有效的 SCSS。 Sass语…

window golang 升级版本

执行go tidy&#xff0c;发现执行不了&#xff0c;得升级一下版本了 进入官网&#xff0c;并选择合适的系统以及版本。https://go.dev/dl/ 这台电脑是windows&#xff0c;我本人比较喜欢下载zip自己解压。 解压&#xff0c;这里我选择直接覆盖原文件&#xff0c;需要保留原版…

前端技术交流群

欢迎来到前端筱园用户交流&#xff01;这是一个专注于前端编程技术、学习资源和行业动态的讨论平台。在这里&#xff0c;你可以分享经验、提问、回答问题&#xff0c;与其他前端开发者一起学习和成长。 &#x1f31f;亲爱的朋友们&#x1f31f; 大家好&#xff01;感谢你们一直…

TCP的特性(4)

TCP特性 拥塞控制(可靠性机制)延迟应答(效率机制)捎带应答(效率机制)面向字节流(粘包问题)TCP异常机制(心跳包)小结 拥塞控制(可靠性机制) 虽然TCP引入了滑动窗口,能够高效可靠的传输大量数据,但是在开始阶段就发送大量数据,可能引起一系列问题. TCP引入了慢启动机制,先发少量的…

私域流量优化:如何利用 AIPL 模型洞察客户生命周期价值

在当今这个数字化时代&#xff0c;商业战场的硝烟从未如此浓烈。随着互联网红利的逐渐消退&#xff0c;公域流量的成本水涨船高&#xff0c;企业间对于有限用户资源的争夺已进入白热化阶段。每一次点击、每一个曝光背后&#xff0c;都是企业不得不承担的高昂代价。在此背景下&a…

Linux内存管理——Swap

swap space 一个磁盘区域&#xff0c;作为内存使用。当系统内存不足时&#xff0c;会将一些很久不使用的数据转移到swap space中。 优点&#xff1a;扩展了内存空间 缺点&#xff1a;用磁盘做内存&#xff0c;读写效率降低。 swappiness swappiness的值表示建议swap space替…

用Rust解决鸡兔同笼问题

目录 一、什么是鸡兔同笼问题&#xff1f; 二、用Rust解决鸡兔同笼问题 三、鸡兔同笼问题在实际生活中的应用有哪些&#xff1f; 一、什么是鸡兔同笼问题&#xff1f; 鸡兔同笼问题是一种古代著名的数学问题&#xff0c;用于训练逻辑思维和解决方程的能力。 鸡兔同笼问题起…

【MongoDB】安装与使用

前两篇文章介绍了前端vuevite&#xff0c;后端fastapi&#xff0c;这篇文章为项目搭建数据库。数据库选用MongoDB。如果你还没看过前两篇&#xff0c;你可以去看一下&#xff1a; 【Vue】搭建第一个vue3vite前段项目 【fastapi】搭建第一个fastapi后端项目 选择版本 官网最新…

pythonsql-随机问答小程序

随机问答-python&sql 智力问答测试&#xff0c;在答题过程中对做对、做错进行实时跟踪&#xff0c;测试完成后能根据玩家的答题情况给出成绩。 1. 设计思路 程序使用了一个SQLite试题库test.db&#xff0c;其中每个智力问答山题目、4个选项*1-1正确答案组成(question, An…

day-32 不同路径 II

思路 典型的DP问题&#xff0c;状态转换方程为dp[i][j]dp[i-1][j]dp[i][j-1],边界情况单独讨论 解题方法 对于第一行&#xff1a;如果当前元素为0且在该元素的同一行的左边不存在1&#xff0c;则路径数皆为1&#xff0c;否则为零 对于第一列&#xff1a;如果当前元素为0且在该…

CSP-j 计算机硬件

计算机系统 计算机系统由计算机硬件和软件两部分组成。硬件包括中央处理器、存储器和外部设备等&#xff1b;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理结果等功能。 主要技术指标 字长&#xff1a;字长是指CPU能够同…

【Git实战】如何将本地仓库推送至Github(windows版)?

最近使用Go语言开发项目&#xff0c;想寻找位操作相关的工具包。找了一圈没有合适的&#xff0c;因此自己写了一个。又想将其推送到Github上&#xff0c;中间逢山开路&#xff0c;遇水搭桥&#xff0c;终于成功将本地Git仓库和Github进行了关联。现将我的方法公之于众&#xff…