• 2018-2019-1 20165206 《信息安全系统设计基础》第六周学习总结


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

    - 教材学习内容总结

    • 输入操作是从I/O设备复制数据到主存,输出操作是从主存复制数据到I/O设备。

    - Unix I/O:

    • 所有的I/O设备都被模型化为文件。

    • 描述符在打开文件的后续对此文件的所有操作中标识这个文件。

    • 每个进程开始时都有打开的三个文件:标准输入(描述符为0)、标准输出(描述符为1)和标准错误(描述符为2)。

    • 读操作:一个读操作就是从文件复制n个字节到内存,从当前文件位置k开始,然后将k增加到k+n。

    • 写操作:一个写操作就是从内存复制n个字节到一个文件,从当前文件位置k开始,然后更新k。

    - 文本文件和二进制文件

    - 打开文件:

    int open(char *filename,int flags,mode_t mode)

    • flags参数指明了进程打算如何访问这个文件:

    O_RDONLY:只读;

    O_WRONLY:只写;

    O_RDWD:可读可写

    注意O_RDONLY|O_WRONLY和O_RDWD不相同。

    • mode参数指定了新文件的访问权限位。

    文件夹权限0777表示用户、用户组的成员和其他人可读可写可执行。
    7转化为二进制111,分别对应读、写、操作。

    - 关闭文件

    • int close(int fd)
      若成功则为0,若出错则为-1.
      关闭一个已关闭的描述符会出错。

    - 读、写文件

    • 应用程序是通过分别调用read和write函数来执行输入和输出的。
    - ssize_t read(int fd,void *buf,size_t n);
    
    - ssize_t write(int fd,const void *buf,size_t n);
    
    • size_t是无符号长整型,ssize_t是有符号长整型。

    • 内核通过三个相关的数据结构来表示打开的文件:描述符表、文件表(file table)和v-node表。

    • dup2函数:
      int dup2(int oldfd,int newfd)
      dup2函数复制描述符表表项oldfd到描述符表表项newfd,覆盖描述符表表项newfd以前的内容。

    - 课上内容总结

    - 帮助命令man:

    • man -k 函数名 搜索与此函数相关的信息

    • man -k 函数名 | grep key1| grep key2 带有筛选的搜索

    • man 2 函数名 可直接进入查看函数功能、所需头文件、返回值等相关信息的文件

    • grep -nr:grep -nr XXX /usr/include查宏定义,查找关键字,全文搜索

    • echo命令:用于创建一个二进制文件。

    echo -ne "x6b" > test
    

    x表示为16进制,NNN 表示八进制

    也可以用另外一种写法:

    echo 6b | xxd -r -ps > test
    
    • od命令:输出文件内容。查看二进制文件时,用od -x将其转成8进制或od -h将其转成16进制来看

    • head和tail命令:用来显示开头或结尾。

    显示文件的前5行内容

    head -n 5 example.c
    

    显示文件除了头5行以外的所有内容

    head -n -5 example.c
    

    显示文件后5行的内容。

    tail -n 5 example.c
    
    

    • who命令:

    who命令用于显示目前登录系统的用户信息。

    c语言实现who命令的学习,我是参考博客:Linux下who命令之C语言实现进行学习的。

    通过man who查看who了帮助文档,了解who命令的实现。

    通过查看utmpx,了解/var/run/utmp是如何存储的

    编程思想:
    1、用open函数打开/var/run/utmp文件;
    2、用while循环实现从头到尾读取文件;
    3、用read函数读取并输出实现who命令的相关信息。

    - 上周错题总结

    • 错题1:
      有关高速缓存的说法正确的是()
      A .
      高速缓存的容量可以用C=SEB 来计算
      B .
      高速缓存容量为2048,高速缓存结构为( 32 ,8,8,32)
      C .
      直接映射高速缓存要:组选择、行匹配、字抽取

    D .
    当程序访问大小为2的幂的数组时,直接映射高带缓存中常发生冲突不命中

    • 答案: A C D
  • 相关阅读:
    Java 中文 乱码问题
    JQuery 操作 radio 被坑一例
    标准I/O库之打开和关闭流
    标准I/O库之缓冲
    标准I/O库之标准输入、标准输出和标准出错
    标准I/O库之流和FILE对象
    文件和目录之文件访问权限位小结
    文件和目录之设备特殊文件
    文件和目录之chdir、fchdir和getcwd函数
    文件和目录之读目录
  • 原文地址:https://www.cnblogs.com/brs666/p/9905108.html
Copyright © 2020-2023  润新知