20201321周慧琳

教材7.8章读书笔记

教材7/8章读书笔记

by 20201321 周慧琳

学习目标

第七章:文件操作
第七章主要是关于操作系统中的各种操作级别:文件存储准备存储设备,内核中的文件系统支持函数、系统调用、文件流上的I/O函数、用户命令和各种操作sh脚本。描述了各种操作,包括从用户空间的文件流读/写到内核空间的系统分区表的示例程序、文件系统的格式化分区以及挂载磁盘分区。

第八章:使用系统调用进行文件操作

  • 第八章解释了系统调用的作用和Linux的在线手册页【这部分和娄老师上课重点要求我们掌握的内容是有重叠的】
  • 展示了如何使用系统调用进行文件操作,列举并解释了文件操作中最常用的系统调用,阐明了硬链接和符号链接文件,具体解释了系统调用,基于stat信息,开发了一个类似于ls的程序来显示目录内容和文件信息,接着讲解了open-close-lseek系统调用和文件描述符;然后展示了如何使用读写系统调用来读写文件内容;
  • 在此基础上,说明了如何使用系统调用来显示和复制文件;还演示了如何开发选择性文件复制程序,其行为类似于一个简化的Linux dd实用程序。

详细知识点的归纳


学习收获和心得

  • 这部分和娄老师上课讲的内容密切相关,通过看书我能够建立更加完整的知识框架,尤其是之前对“系统调用”所涉及的概念有所混淆,通过娄老师的上课内容我觉得通过一个C程序文件可以算是系统调用,后来发现常用Linux系统命令这些也是系统调用,而sh脚本也是系统调用,并且书上说比写C程序更方便,之后需要进一步对sh脚本进行实践
  • stat结构体
struct stat{
    dev_t    st_dev ;        / * device * /
    ino_t    st_ino;        / * inode * /  
    mode_t   st_mode;      / * protection */
    nlink_t  st_nlink ;    /* number of hard links * /
    uid_t    st_uid;      / * user ID of owner * /    
    gid_t    st_gid;      / *group ID of owner */
    dev_t    st_rdev;     /* device type (if inode device)*/
    off_t    st_size;      /* total size, in bytes * /
    u32      st_blksize;    / * blocksize for filesystem 
 I/O */
    u32      st_blocks;      / *number of blocks allocated*/
    time_t   st_atime;      / * time of last access */
    time_t   st_mtime;    /* time of last modification */
    time_t   st_ctime;    /* time of last change * /
};

通过系统调用实现文件复制

一开始出现错误,发现是fopen的路径写错了,还是把txt文件放在和代码同一文件夹下比较方便操作

posted on 2022-09-25 19:41  20201321周慧琳  阅读(15)  评论(0编辑  收藏  举报