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

学习笔记4

时间:2023-10-01 21:47:56浏览次数:29  
标签:文件 char 调用 知识点 分区 笔记 学习 include

学习笔记:文件操作

知识点归纳

文件操作级别

硬件级别
fdisk:将硬盘、U盘或SDC盘分区
mkfs:格式化磁盘分区,为系统做好准备
fsck:检查和维修系统
碎片整理:压缩文件系统中的文件

操作系统内核中的文件系统函数
系统调用
I/O库函数
用户命令
sh脚本

文件I/O操作

低级别文件操作

分区

低级别文件操作分区涉及到与磁盘和文件系统直接交互的操作。以下是一些与低级别文件操作分区相关的知识点:

  1. 硬盘分区:了解硬盘分区的概念和原理,包括主分区、扩展分区和逻辑分区等。

  2. 磁盘格式化:了解磁盘格式化的过程和作用,包括创建文件系统、写入文件系统元数据等。

  3. 文件系统:了解不同类型的文件系统,如FAT32、NTFS、EXT4等,以及它们的特点和用途。

  4. 磁盘操作命令:掌握一些用于低级别磁盘操作的命令,如fdiskmkfsmount等,可以用于分区、格式化和挂载磁盘。

  5. 磁盘分区表:了解磁盘分区表的结构和内容,如MBR(主引导记录)和GPT(GUID分区表)。

  6. 磁盘镜像:了解磁盘镜像的概念和用途,包括创建和还原磁盘镜像的方法。

  7. 数据恢复:了解一些基本的数据恢复原理和方法,包括使用工具和技术来恢复误删除或损坏的文件。

这些是低级别文件操作分区的一些基本知识点,它们涉及到与磁盘和文件系统直接交互的操作。

使用系统调用进行文件操作

系统调用
系统调用手册页

man 2 stat
man 2 open
man 2 read

使用系统调用进行文件操作

以下是示例代码:

#include<stdio.h>
#include<errno.h>
int main()
{
	char buf[256],*s;
	int r;
	r = mkdir("newdir",0766);	//mkdir syscall
	if(r<0)
		printf("error=%d : %s\n",errno,strerror(errno));
	r = chdir("newdir");	//cd into newdir
	s = getcwd(buf,256);	//get CWD string int buf[]
	printf("CWD = %s\n",s);
}

常用的系统调用

  1. 文件操作:常见的文件操作系统调用包括openclosereadwritelseekstatmkdirrmdirrename等。

  2. 进程管理:常见的进程管理系统调用包括forkexecwaitexitkillgetpidgetppidgetuidgetgidsetuidsetgid等。

链接文件

硬链接文件

ln oldpath newpath
对应系统调用:link(char *oldpath,char *newpath)
减少文件链接数:unlink(char *pathname)

符号链接文件:
ln -s oldpath newpath

创建符号链接或软链接:
symlink(char *oldpath,char *newpath)

stat系统调用
stat文件状态
stat结构体
stat与文件索引节点

文件类型和权限

st_mode:第一个字母表示文件类型,后面9个字符基于权限位,如果位是1,每个字符打印为r|w|x;如果位是0,则打印-。x位表示是否允许访问目录。

opendir-readdir函数

头文件:#include<dirent.h>

readlink函数

int readlink(char *pathname,char buf[],int bufsize);
将符号链接文件的内容复制到bufsize的buf[]中,并将实际复制的字节数返回。

实践##

练习7.2:编写一个c程序myfdisk,将一个虚拟磁盘分成4个主分区。运行程序后,在虚拟磁盘上运行Linux fdisk 来验证结果。
相关的代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

#define DISK_SIZE 1024 // 虚拟磁盘的大小,单位为字节
#define PARTITION_SIZE DISK_SIZE / 4 // 每个分区的大小

int main() {
    int fd;
    char diskfile[] = "disk.img"; // 虚拟磁盘文件名

    // 创建虚拟磁盘文件
    fd = open(diskfile, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
    if (fd == -1) {
        perror("Failed to create disk file");
        exit(1);
    }

    // 扩展虚拟磁盘文件到指定大小
    if (lseek(fd, DISK_SIZE - 1, SEEK_SET) == -1) {
        perror("Failed to expand disk file");
        close(fd);
        exit(1);
    }
    if (write(fd, "", 1) == -1) {
        perror("Failed to expand disk file");
        close(fd);
        exit(1);
    }

    // 分区
    char command[256];
    for (int i = 1; i <= 4; i++) {
        snprintf(command, sizeof(command), "echo 'n\np\n%d\n\n+%d\nw' | fdisk %s", i, PARTITION_SIZE, diskfile);
        system(command);
    }

    // 关闭虚拟磁盘文件
    close(fd);

    printf("Disk partitioning completed.\n");

    return 0;
}

运行结果:

苏格拉底挑战

  1. 知识点1:文件I/O操作

    我在学习文件I/O操作知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。

 - 针对我I/O操作知识点,我理解了吗?

 - 我的回答结束了,请对我的回答进行评价总结。

  1. 知识点2:使用系统调用进行文件操作

    我在学习使用系统调用进行文件操作知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。

    • 针对我系统调用进行文件操作知识点,我理解了吗?

    • 我的回答结束了,请对我的回答进行评价总结。

问题与解决思路

在学习过程中,我遇到了以下问题,并使用chatgpt等AI工具解决:

  1. 问题1:格式化分区具体有什么作用

标签:文件,char,调用,知识点,分区,笔记,学习,include
From: https://www.cnblogs.com/zqr031029/p/17739292.html

相关文章

  • 《信息安全系统设计与实现》第四周学习笔记
      第七章文件操作级别:硬件级别fdiskmkfsfsck碎片整理操作系统内核中的文件系统函数:系统调用I/O库函数用户命令sh脚本低级别文件操作:分区Command(mforhelp):m---输出帮助信息Commandactionatoggleabootableflag---设置启动分区beditbsddisklabe......
  • Pytorch环境深度学习环境
    Pytorch环境深度学习环境1、安装minicoda下载地址:Miniconda—minicondadocumentation设置环境变量:安装路径\Miniconda3安装路径\Miniconda3\Scripts安装路径\Miniconda3\Library\bin测试:打开cmd,输入conda测试指令是否有效。2、配置base环境国内镜像(1)conda镜像......
  • Webpack5 基础使用笔记
    [webpack中文文档](概念|webpack中文文档|webpack中文文档|webpack中文网(webpackjs.com)):本质上,webpack是一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图(dependencygraph),然后将你......
  • 第七、八章学习笔记
    学习笔记第七章文件操作2023-10-011.文件操作级别(1)硬件级别:fdisk:将硬件、U盘或SDC盘分区。mkfs:格式化磁盘分区,为系统做好准备。fsck:检查和维修系统。碎片整理:压缩文件系统中的文件。(2)操作系统中的文件系统函数(3)系统调用(4)I/O库函数(5)用户命令(6)sh......
  • C++中mutable关键字学习
    转自:https://liam.page/2017/05/25/the-mutable-keyword-in-Cxx/,讲的很好。1.介绍mutable即可变的,mutable只能用来修饰类的数据成员;而被mutable修饰的数据成员,可以在const成员函数中修改。例子:classHashTable{public://...std::stringlookup(conststd::......
  • 学习笔记(4)
    一、任务详情自学教材第7,8章,提交学习笔记(10分),评分标准如下知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)实践过程截图,......
  • 斜率优化学习笔记
    下面可能会用到一些叫上凸壳鸭下凸壳呀的名词,大家不用弄懂它的概念的说也不用望风而逃(我之前就望风而逃过(*/ω\*)),凸壳就简单理解成一个凸了一块的一段连线就好了。斜率优化有些地方不好用代数的语言刻画,比如下凸壳,比如凸包(凸包有的定义就直接写橡皮筋的比喻233333),以及为什么下凸......
  • 学习笔记四
    文件操作文件操作级别文件操作分为五个级别,按照从高到低的顺序如下:(1)硬件级别:硬件级别的文件操作包括:fdisk:将硬盘、U盘或SDC盘分区。mkfs:格式化磁盘分区、为系统做好准备。fsck:检查和维修系统。碎片整理:压缩文件系统中的文件。大多数是针对系统的实用程序。普通用......
  • 第七八章学习笔记
    第七八章学习笔记知识点总结第七章文件操作级别:文件操作级别
文件操作分为五个级别,按照从低到高的顺序排列如下。(1)硬件级别∶硬件级别的文件操作包括∶fdisk∶将硬盘、U盘或SDC盘分区。mkfs∶格式化磁盘分区,为系统做好准备。fsck∶检查和维修系统。碎片整理∶压缩......
  • 20211128《信息安全系统设计与实现》第七、八章笔记
    一、任务内容自学教材第7,8章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT......