Linux操作系统实验四 文件管理(二)(下)

简介: Linux操作系统实验四 文件管理(二)(下)

任务描述

在Linux系统中,如果要对一个文件进行操作,操作前需要将这个文件打开。这样才能实现对该文件的操作。

本关任务:学会使用C语言在Linux系统中打开与关闭文件操作。

相关知识

文件的打开与关闭操作是 I/O 操作的第二步。在Linux系统中提供了以下两个系统调用函数用于打开和关闭文件操作,分别是openclose。本关将介绍文件的打开和关闭函数的使用方法。

使用man 2 函数名也可以查询这些函数的使用方法。

文件的打开

打开文件的系统调用函数是open,具体的说明如下:

  • 需要的头文件如下:
  • i. #include <sys/types.h>
  • ii. #include <sys/stat.h>
  • iii. #include <fcntl.h>
  • 函数格式如下:

int open(coust char *pathname, int flags);

int open(const char *pathname, int flags, made_t mode);

参数说明:

pathname:需要被打开或创建的文件绝对路径名或相对路径名;

flags:用于描述文件的打开方式;

mode:用于指定所创建文件的权限(与上一关中creat函数中mode取值一致);

第一个open函数用于打开已经存在的文件。而第二个open函数可以创建一个不存在的文件且打开,该函数将flags参数设置为O_CREAT | O_WRONLY | O_TRUNC时等同于上一关中的creat函数。

常见的flags取值及其含义见下表所示:

函数返回值说明: 调用成功时,返回值为 文件的描述符(大于0的整数);调用失败时,返回值为-1并设置错误编号errno

文件的关闭

关闭文件的系统调用函数是close,具体的说明如下:

  • 需要的头文件如下:
  • i. #include <unistd.h>
  • 函数格式如下: int close(int fd);

参数说明:

  1. fd:需关闭文件的描述符;
  • 函数返回值说明: 调用成功时,返回值为 0;调用失败时,返回值为-1,并设置错误编号errno

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 补全open_File函数,使其以读方式打开一个文件,并返回文件描述符fd
  • 补全close_File函数,使其关闭一个已经被打开的文件。

任务描述

通过上一关的学习,我们学会了如何使用C语言来打开和关闭文件,本关将继续介绍对文件的读写操作。

本关任务:学会使用C语言在Linux系统中对文件进行读写操作。

相关知识

文件的读写是 I/O 操作的核心内容。上一关中已经介绍了如何打开和关闭一个文件,但是要实现文件的 I/O 操作就必须对其进行读写,文件的读写操作所用的系统调用分别是readwrite。本关将介绍文件的读写函数的使用方法。

使用man 2 函数名也可以查询这些函数的使用方法。

文件的写操作

写入文件的系统调用函数是write,具体的说明如下:

  • 需要的头文件如下:
  • i. #include <unistd.h>
  • 函数格式如下: ssize_t write(int fd, void *buf, size_t count);

参数说明:

  1. fd:表示将对之进行写操作的文件打开时返回的文件描述符;
  2. buf:指向存放将写入文件的数据的缓冲区的指针;
  3. count:表示本次操作所要写入文件的数据的字节数;
  • 函数返回值说明: 调用成功时,返回值为所写入的字节数;调用失败时,返回值为-1并设置错误编号errno
文件的读操作

读取文件的系统调用函数是read,具体的说明如下:

  • 需要的头文件如下:
  • i. #include <unistd.h>
  • 函数格式如下: ssize_t read(int fd, void *buf, size_t count);

参数说明:

  1. fd:表示将对之进行写操作的文件打开时返回的文件描述符;
  2. buf:指向存放所读数据的缓冲区的指针;
  3. count:读操作希望读取的字节数;
  • 函数返回值说明: 调用成功时,返回值为本次读操作实际读取的字节数;调用失败时,返回值为-1并设置错误编号errno

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 补全write_File函数,完成向文件写入字符串功能。并返回实际写入字符个数。
  • 补全readLine函数,完成从文件中读取一行的功能(不包括换行符),并返回实际读取的字符个数(文件的换行符号为\n)。

任务描述

通过前三关的学习,我们学会了如何使用C语言来创建、打开/关闭和读写文件,本关将介绍如何删除一个已经存在的文件。

本关任务:学会使用C语言在Linux系统中删除文件操作。

相关知识

当不需要一个文件时,我们通常直接选中文件按下delete键对其删除,本关将介绍如何在Linux系统中使用C语言删除一个已经存在的文件。

在Linux系统中使用unlinkremove系统调用可以实现对文件的删除操作。

使用man 2 函数名或者man 3 函数名也可以查询这些函数的使用方法。

使用unlink函数删除文件

删除文件的系统调用函数是unlink,具体的说明如下:

  • 需要的头文件如下:
  • i. #include <unistd.h>
  • 函数格式如下: int unlink(const char *pathname); 参数说明:
  • i. pathname:需要删除的文件绝对路径名或相对路径名;
  • 函数返回值说明: 调用成功时,返回值为0;调用失败时,返回值为-1并设置错误编号errno
使用unlink函数删除文件

remove是删除文件的另一个函数,该函数是C语言的库函数,其本质是通过调用系统调用unlink来完成文件的删除操作,具体的说明如下:

  • 需要的头文件如下:
  • i. #include <stdio.h>
  • 函数格式如下: int remove(const char *pathname); 参数说明:
  • i. pathname:需要删除的文件绝对路径名或相对路径名;
  • 函数返回值说明: 调用成功时,返回值为0;调用失败时,返回值为-1并设置错误编号errno

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 删除当前目录下的testFile文件。
相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
12天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
31 0
Vanilla OS:下一代安全 Linux 发行版
|
5天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
26 9
|
5天前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
22 2
|
9天前
|
缓存 网络协议 Linux
Linux操作系统内核
Linux操作系统内核 1、进程管理: 进程调度 进程创建与销毁 进程间通信 2、内存管理: 内存分配与回收 虚拟内存管理 缓存管理 3、驱动管理: 设备驱动程序接口 硬件抽象层 中断处理 4、文件和网络管理: 文件系统管理 网络协议栈 网络安全及防火墙管理
30 4
|
8天前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
27 1
|
11天前
|
物联网 Linux 云计算
Linux操作系统的演变与未来趋势####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其在服务器、桌面及嵌入式系统领域的应用现状,并展望了云计算、物联网时代下Linux的未来趋势。通过回顾历史、剖析现状、预测未来,本文旨在为读者提供一个全面而深入的视角,以理解Linux在当今技术生态中的重要地位及其发展潜力。 ####
|
15天前
|
人工智能 安全 Linux
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
18 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
15 2