zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165208 《信息安全系统设计基础》第七️周学习总结

    2018-2019-1 20165208 《信息安全系统设计基础》第七️周学习总结

    教材学习

    1. man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用

      grep -nr XXX /usr/include :查找宏定义,类型定义
    2. 异常可以分为四类:中断、陷阱、故障和终止。
      image
    3. syscalls n指令允许用户对内核服务受控访问,即用户请求服务n。执行syscalls会导致异常处理程序的陷阱。
    4. 函数和系统调用本质上都是函数。不同的是,系统调用运行在内核模式中,普通函数调用运行在用户模式中。
    5. 进程总是处于下面三种状态之一:运行、停止、终止。
    6. 将设备优雅的映射为文件:打开文件、改变当前的文件位置、读写文件、关闭文件。
    7. linux文件三种表现类:普通文件(包括文本文件和二进制文件)、目录、套接字。
    8. open函数:用来打开一个已存在的文件或创建新文件。若成功则返回新文件描述符,出错返回-1。
      image
    9. read、write函数执行输入和输出。
      image
      image
      ssize_t & size_t:size_t型输入为无符号长整型,ssize_t型返回值为有符号长整型,因为考虑到出错时许返回-1。

    教材实践

    有关函数使用

    • getpid

      每个进程都有唯一的正数进程ID(PID)。查看帮助文档如下图所示:
      image
      getpid函数返回调用进程的PID,getppid函数返回它的父进程的PID。
    • fork

      man 2 fork 命令查看其帮助文档,如下图所示:
      image
      即创建一个子进程,需要包含的头文件是#include <unistd.h>。
      image
      在父亲进程中其返回值时子进程的PID,在子进程中其PID是0。
      image
      它还与下列函数有关:clone(2), execve(2), exit(2), setrlimit(2), unshare(2),
      vfork(2), wait(2), daemon(3), capabilities(7), creden‐
      tials(7)

      试运行老师的代码效果如下:
      image
      image
      image
      image
      image
    • waitpid

      man 2 waitpid 命令查看其帮助文档,如下图所示:
      image
      "wait for process to change state"等待一个进程去改变当前状态。需要包含的头文件是:#include <sys/types.h>;#include <sys/wait.h>。
      image
      wait()返回终止子进程的PID,出错时返回-1;waitpid()返回状态改变的子进程的PID,出错时同样返回-1。
      image
      它们还和下列函数有关: _exit(2), clone(2), kill(2), ptrace(2), sigaction(2), signal(2),
      wait4(2), pthread_create(3), credentials(7), signal(7)

      wait()和waitpid()的用法有所不同。wait()挂起调用进程直到有一其子女运行终止;waitpid()挂起调用进程执行直到由PID参数指定的子状态已更改。
      试运行代码如下:
      image
    • sleep
      image
      将一个进程挂起一段指定的时间。如果请求的时间量已经到了,sleep返回0,否则返回还剩下的要休眠的秒数。
    • execve
      image
      在当前进程的上下文中加载并运行一个新的程序。如果成功则不返回,如果错误则返回-1。
    • exit

      man 2 exit查看帮助文档后,如下图所示:
      image
      terminate the calling process终止当前唤起的进程。包含的头文件是:#include <unistd.h>.且这个系统调用没有返回值。

    课上实践

    1. 参考伪代码实现ls的功能,提交代码的编译,运行结果截图,码云代码链接。
    • 伪代码如下:

      打开目录文件

      针对目录文件

      读取目录条目

      显示文件名

      关闭文件目录文件
    • 实验效果图
      image
    • 代码托管

    其他(感悟、思考等,可选)

    这两章学了很多新函数,越发感受到了man 命令的方便,感觉有时候写代码还是很困难,但对于C语言实现linux命令大概有个框架了。

    参考资料

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 20篇 400小时
    第三周 432/432 2/2 11/11
    第四周 549/549 1/3 8/8
    第五周 692/692 1/4 9/9
    第六周 776/776 2/6 13/13
    第七周 902/902 1/7 15/15
  • 相关阅读:
    中文字,文本框,button按钮垂直居中对齐方法
    Denny_Yang的语录
    为SELECT结果集添加伪序号列
    考勤系统问题记录一:事务日志太大
    在DateTable中进行数据统计(不用循环)
    今天去游泳了
    关于HbSrv.exe
    有感于--特洛伊
    windows下DNS的问题
    Google新功能
  • 原文地址:https://www.cnblogs.com/KY-high/p/9933408.html
Copyright © 2011-2022 走看看