首页 > 其他分享 >学习笔记4

学习笔记4

时间:2023-09-28 20:44:44浏览次数:34  
标签:newpath char 文件 int 分区 笔记 学习 oldpath

第七、八章

文件操作

文件操作级别

1.硬件操作

  大多数是针对系统的实用程序

2.操作系统内核中的文件系统函数

  每个操作系统内核均可为基本文件操作提供支持

3.系统调用

  用户模式程序使用系统调用来访问内核函数

  每个库函数都会发出一个系统调用,使进程进入内核模式来执行相应的内核函数

4.I/O库函数

  

5.用户命令

  用户可以使用Unix/Linux命令来执行文件操作

6.sh脚本

分区

在计算机存储中,分区(Partition)是将物理存储设备(如硬盘、固态硬盘等)划分为逻辑部分的过程。每个分区被视为独立的存储空间,并被操作系统识别和管理。

分区的主要目的是将物理存储设备划分为多个逻辑单元,使得每个分区可以被独立格式化、挂载以及用于存储文件系统。这样可以提供更灵活和有效的存储管理,以满足不同的需求和使用场景。

每个分区可以具有不同的文件系统类型,例如常见的FAT32、NTFS、EXT4等。每个文件系统都有其特定的功能、性能和限制。

分区还可以有不同的目的,例如:

  1. 启动分区:在计算机启动过程中,用于存储启动相关的引导程序和操作系统。
  2. 系统分区:用于安装和运行操作系统及其相关文件。
  3. 数据分区:用于存储用户数据、应用程序、媒体文件等。
  4. 交换分区(Swap分区):用于操作系统将部分内存内容临时存储到磁盘,以满足内存需求的扩展。
  5. 备份分区:用于存储备份和恢复数据。

需要注意的是,每个物理存储设备通常可以被划分为多个分区。分区的大小和数量取决于操作系统和存储设备的限制。

总而言之,分区是将物理存储设备划分为逻辑部分的过程,用于提供独立的存储空间和灵活的存储管理。

系统调用:内核模式(Kmode)用户模式(Umode)
文件操作系统调用函数:
access:检查对某个文件的权限
int access (char *pathname, int mode);
chdir:更改目录
int chdir (const char *path);
chmod: 更改某个文件的权限
int chmod (char *path, mode_t mode);
chown:更改文件所有人
lat chow (char *name, int uid, int gid),
chroot:将(逻辑)根目录更改为路径名
Int chroot (char *pathname);
getcwd:获取 CWD 的绝对路径名
char *getcwd(char *buf, int size);
mkdir:创建目录
int mkdir (char *pathname, mode_t mode) ;
rmdir:移除目录(必须为空)
int rmdir (char *pathname);
link:将新文件名硬链接到旧文件名
int link(char *oldpath, char *newpath);
unlink:减少文件的链接数,如果链接数达到0,则删除文件
int unlink(char *pathname)
symlink:为文件创建一个符号链接
int symlink(char *oldpath, char *path name);
rename:更改文件名称
int rename(char *oldpath, char *newpath);
stat:获取文件状态信息
int stat(char *filename, srtuct stat *buf)
int fstat(int filedes, struct stat *buf)
int lstat(char *filename, srtuct stat *buf)

以mkdir为例的程序:

按照书上的代码写了,编译报错连篇,执行可执行错误的时候野报错:段错误(核心以转储)。但神奇的是依然成功的创建了newdir这个文件夹。

先修正代码部分,不得不说gcc的报错非常清晰明了,知道错误在哪,在询问gpt后加了包含mkdir、strerror、chdir、getcwd函数的头文件 就解决了。

创建成功

至于为什么报错依然能创建还没搞懂 gpt也没有很懂的样子,可能是我提问方式有误,猜想和代码段main函数没错,gcc功能强大有关。

链接文件:
硬链接:命令
    ln -s oldpath newpath
  对应的系统调用为:
   link(char *oldpath, char *newpath)

软链结:命令
    ln -s oldpath newpath
  创建从newpath到oldpath的软链接或符号链接,对应的系统调用为:
   symlink(char *oldpath, char *newpath)

在open-close-lseek中不知道文件描述符是什么,问GPT

苏格拉底挑战:

1.文件I/O操作

2.链接文件

标签:newpath,char,文件,int,分区,笔记,学习,oldpath
From: https://www.cnblogs.com/dkyzhouyikai/p/17731104.html

相关文章

  • Vue源码学习(八):生命周期调用
    好家伙, Vue源码学习(七):合并生命周期(混入Vue.Mixin)书接上回,在上一篇中,我们已经实现了合并生命周期现在,我们要在我们的初始化过程中,注册生命周期 1.项目目录 红框为本篇涉及到的.js文件 2.先来看/utils/index.jsexportconstHOOKS=["beforeCreated......
  • [笔记]组成原理_2024年考纲
    一、计算机系统概述(一)计算机系统层次结构1.计算机系统的基本组成2.计算机硬件的基本结构3.计算机软件和硬件的关系4.计算机系统的工作原理“存储程序”工作方式,高级语言程序与机器语言程序之间的转换,程序和指令的执行过程。(二)计算机性能指标吞吐量、响应时间;CPU时钟周期、......
  • 9月《程序员修炼之道:从小工到专家》阅读笔记
    一、注重实效的哲学1我的源码让猫吃了无论是什么任务,我们都可能出现错误,这时,我们需要尽可能处理好他们以示诚实坦率。我们必须承担责任,一味的推卸责任毫无用处。要找各种选择,而非借口。2软件的熵熵在软件中代表“软件腐烂”。究其原因,最重要为开发项目时的心理/文化。那么为什......
  • 2023-2024-1 20231302 《计算机基础与程序设计》第一周学习总结
    作业信息这个作业属于计算机基础与程序设计https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01作业目标快速浏览一遍教材计算机科学概论,课本每章提出至少一个自己不懂的或最想解决的问题并在期......
  • 学期2023-2024-1 学号20231309 《计算机基础与程序设计》第一周学习总结
    学期2023-2024-1学号20231309《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2023-202341计算机基础与程序设计第一周作业这个作业的目标作业正文学期2023-2024-1学号20231309《......
  • 学习笔记4
    第7章文件操作——教材知识点归纳7.1文件操作级别linux中文件操作可以分为5个级别,从低等级到高等级分别为:硬件级别:fdisk:将盘进行分区。mkfs:格式化磁盘分区。fsck:检查系统。碎片整理:压缩文件系统中的文件内核中的文件系统函数由k开头,从操作系统内核层面提供文件操作支......
  • 机器学习与深度学习
    深度学习和机器学习是人工智能领域的两个重要概念,他们之间存在密切的关系,同时又有一些重要的区别。机器学习(MachineLearning):机器学习是一种数据分析技术,它使计算机系统能从以往的经验(或者说数据)中学习并改进自身的性能,而无需进行明确的编程。换句话说,机器学习就是让机......
  • 《信息安全系统设计与实现》第四周学习笔记
    文件操作文件操作级别文件操作分为五个级别:硬件级别fdiskmkfsfsck碎片整理操作系统内核中的文件系统函数系统调用I/O库函数用户命令sh脚本文件I/O操作双线上方的上半部分表示内核空间,下半部分表示进程的用户空间该图显示了进程读/写文件流时的操作序列......
  • 基本技巧——根号分治 学习笔记
    基本技巧——根号分治学习笔记根号分治与其说是一个算法,更不如说是一种思想(trick)。定义根号分治,是一种对数据进行点分治的分治方式,它的作用是优化暴力算法;类似于分块,但应用范围比分块更广。具体来说,对于所进行的操作,按照某个点\(B\)划分,分为大于\(B\)及小于\(B\)两个部......
  • 无监督学习
    无监督学习聚类,(降维,特征学习)密度估计生成模型密度估计显示密度估计-》能给出输入是我分布的概率,但是可以给出近似真实样本的采样数据。隐式密度估计不能给出分布,但是可以给出近似真实样本的采样数据。AE自编码器特点:编码器:从原始数据的提取特征到特征空间,可以用于特征......