学习笔记4
知识点归纳
第7章 文件操作
- 文件操作分为五个级别,按照从低到高的顺序排列如下
硬件级别∶硬件级别的文件操作
操作系统内核中的文件系统函数:每个操作系统内核均可为基本文件操作提供支持。
系统调用:用户模式程序使用系统调用来访问内核函数。
I/O库函数:C语言库提供一系列标准的I/O函数,提高运行效率。
用户命令:用户可以使用Unix/Linux命令来执行文件操作。
sh脚本:用sh语言编写的程序,可通过命令解释程序sh来执行。 - 文件I/O操作
分为内核的以及用户进行的操作 - 低级别文件操作
- 分区
一个块存储设备可以分为几个逻辑单元,称为分区。各分区可以格式化为特定的文件系统,也可以安装在不同的操作系统上。分区表位于第一个扇区的字节便宜446(0x1BE)处,该山区陈伟设备的主引导记录(MBR)。表有四个目录,每个目录由一个16字节的分区结构体定义。 - fdisk将一个存储设备进行分区。而仅仅使用fdisk完成的分区并不能使用,还需要格式化分区。格式化分区的作用是为特定的文件系统准备分区,来存储文件。使用的是mkfs命令。
- EXT2文件系统
Linux使用的默认文件系统就是ext2。ext2文件系统总共有1440个块,每个块大小1KB。
第8章 使用系统调用进行文件操作
- 操作系统内核中的文件系统函数
- 系统调用函数
- 链接文件
- stat系统调用
简单的系统调用:
access:检査对某个文件的权限
int access(char •pathname, int mode);
chdir:更改目录
int chdir(const char *path);
chmod:更改某个文件的权限
int chmod(char *path, mode_t mode);
chown:更改文件所有人
int chown(char *name, int uid, int gid);
chroot:将(逻辑)根目录更改为路径名
int chroot (char *patiiname);
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 uniink(char *pathname);
symlink:为文件创建一个符号链接
int symliak(char *oldpath, char *newpath);
rename:更改文件名称
int rename(char *oldpath, char *newpath)
utime:更改文件的访问和修改时间
int utime(char *pathname, struct utimebuf *time)
以下系统调用需要超级用户权限:
mount:将文件系统添加到挂载点目录上
int mount(char *specialfile, char *mountDir)/
umount:分离挂载的文件系统
int umount(char *dir);
mknod:创建特殊文件
int mknod(char *path, int mode, int device);
苏格拉底挑战
实践过程
让chatgpt给我些实践代码
遇到的问题和解决
误入根目录,找不到主目录 (cd /进入根目录,cd ~进入主目录)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)