zoukankan      html  css  js  c++  java
  • 《信息安全系统设计与实现》学习笔记

    学习笔记

    20191318 王泽文

      《Unix/Linux系统编程》


    第七章 文件操作

      本章主要讲述讨论了多种文件系统;解释了操作系统中的各种操作级别,系统性概述了各种操作,介绍了Linux系统的EXT2文件系统。

      文件操作级别包括:

    1. 硬件级别
    2. 操作系统内核中的文件系统函数
    3. 系统调用
    4. 文件流上的I/O库函数
    5. 用户命令
    6. 各种操作的sh脚本

      在低级别的文件操作中,主要学习了分区和格式化分区。分区指的是一个块存储设备, 如硬盘、U盘、SD卡等,可以分为几个逻辑单元。学习了磁盘分区、显示分区表的程序、文件系统的格式化分区以及挂载磁盘分区;

      接着,还了解了EXT2文件系统,包括EXT2文件系统的系统数据结构、显示超级块、组描述符、块和索引节点位图以及目录内容的程序

      

      


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

      本章主要讲述如何使用系统调用进行文件操作。

      系统调用是一种允许进程进入Kmode(内核模式)以执行Umode(用户模式)不允许操作的机制。复刻子进程、修改执行映像,甚至是终止等操作都必须在内核中执行。

      系统调用手册页,使用man 2 NAME可以用来显示系统调用手册页。

      简单的系统调用:

    1. access : int access(char *pathname,int mode);检查对某个文件的权限
    2. chdir : int chdir(const char *path);更改目录
    3. chmod:int chmod{char *path, mode_t mode); 更改某个文件的权限
    4. chown : int chown(char *name, int uid, int gid); 更改文件所有人
    5. chroot: int chroot(char *pathname); 将(逻辑)根目录更改为路径名
    6. getcwd: char *getcwd(char *buf, int size); 获取 CWD 的绝对路径名
    7. mkdir: int mkdir(char *pathname, mode_t mode)创建目录
    8. rmdir: int rmdir(char *pathname); 移除目录(必须为空)
    9. link: int link(char *oldpath, char *newpath); 将新文件名硬链接到旧文件名
    10. unlink: int unlink(char *pathname);减少文件的链接数;如呆链接数达到 0, 则删除文件
    11. symlink: int sym1ink(char *o1dpath, char *newpath); 为文件创建一个符号链接
    12. rename: int rename(char *o1dpath, char *newpath); 更改文件名称
    13. utime: int utime(char *pathname, struct utimebuf *time) 更改文件的访间和修改时间

      以下系统调用需要超级用户权限。

    1. mount: int mount(char *specialfile, char •mountDir); 将文件系统添加到挂载点目录上
    2. urnount: int umount(char *dir); 分离挂载的文件系统
    3. mknod: int mknod(char *path, int mode, int device); 创建特殊文件

      常用的文件操作的系统调用:

    1. stat : 获取文件状态信息
    2. open: 打开一个文件进行读、写、追加
    3. close: 关闭打开的文件描述符
    4. read: 读取打开的文件描述符
    5. write: 写入打开的文件描述符
    6. lseek: 重新定位文件描述符的读/写偏移量
    7. dup: 将文件描述符复制到可用的最小描述符编号中
    8. dup2: 将oldfd复制到newfd中,如果newfd己打开,先将其关闭
    9. link: 将新文件硬链接到旧文件
    10. unlink: 取消某个文件的链接;如果文件链接数为0,则删除文件int unlink(char *pathname)
    11. symlink: 创建一个符号链接
    12. readlink: 读取符号链接文件的内容
    13. umask: 设置文件创建掩码;文件权限为(mask& -umask)

      编程实践

    在这里进行了myls编程实践,但是在调试的过程中并没有把代码调试成功


    课堂学习

      在课堂的学习中,我学习了man手册的使用和sort指令的使用,学习到了在不清楚Linux指令的使用时可以用man -k 来获取帮助。也了解到了cheat的使用也能给我的系统指令学习带来帮助。


    学习体会

      在这次的学习中,开始对Linux的系统调用等的函数进行学习,但由于还是初初接触,对其各种定义和使用都一知半解,了解不够。因此,在实践中也无法很好的去实现出来,希望在接下来的学习中继续深入去学习。
  • 相关阅读:
    能飞英语学习软件学习实践
    英语学习方式总结与实践
    Hello World
    centos 7.6中搭建samba共享服务
    PHP漏洞全解(一)PHP网站的安全性问题
    MySQL查询语句练习题
    在PHP中使用CURL实现GET和POST请求的方法
    js数组的操作大全
    php四种基础算法:冒泡,选择,插入和快速排序法
    Linux查看端口使用状态及启动
  • 原文地址:https://www.cnblogs.com/wzwyoshino/p/15389578.html
Copyright © 2011-2022 走看看