zoukankan      html  css  js  c++  java
  • 20145312 《信息安全系统设计基础》第10周学习总结

    20145312 《信息安全系统设计基础》第10周学习总结

    教材学习内容总结

    第10章 系统级I/O

    错误处理

    1. 错误处理风格
      (1)Unix风格
      遇到错误后返回-1,并且将全局变量errno设置为指明错误原因的错误代码;
      如果成功完成,就返回有用的结果。
      (2)Posix风格
      返回0表示成功,返回非0表示失败;
      有用的结果在传进来的函数参数中。
      (3)DNS风格
      有两个函数,gethostbyname和gethostbyaddr,失败时返回NULL指针,并设置全局变量h_errno。
      (4)错误报告函数
    void unix_error(char *msg) /* unix-style error */
    {
        fprintf(stderr, "%s: %s
    ", msg, strerror(errno));
        exit(0);
    }
    /* $end unixerror */
    
    void posix_error(int code, char *msg) /* posix-style error */
    {
        fprintf(stderr, "%s: %s
    ", msg, strerror(code));
        exit(0);
    }
    
    void dns_error(char *msg) /* dns-style error */
    {
        fprintf(stderr, "%s: DNS error %d
    ", msg, h_errno);
        exit(0);
    }
    
    void app_error(char *msg) /* application error */
    {
        fprintf(stderr, "%s
    ", msg);
        exit(0);
    }
    
    1. 错误处理包装函数
      (1)Unix风格
      成功时返回void,返回错误时包装函数打印一条信息,然后退出。
    void Kill(pid_t pid, int signum) 
    {
        int rc;
    
        if ((rc = kill(pid, signum)) < 0)
        unix_error("Kill error");
    }
    

    (2)Posix风格
    成功时返回void,错误返回码中不会包含有用的结果。

    void Pthread_detach(pthread_t tid) {
        int rc;
    
        if ((rc = pthread_detach(tid)) != 0)
        posix_error(rc, "Pthread_detach error");
    }
    

    (3)DNS风格

    struct hostent *Gethostbyname(const char *name) 
    {
        struct hostent *p;
    
        if ((p = gethostbyname(name)) == NULL)
        dns_error("Gethostbyname error");
        return p;
    }
    

    视频学习内容总结

    ls命令

    • ls功能:读取文件名和文件属性,按照字典序排序后输出。
    • 常用的命令行选项:
    ls -l   以长格式的形式查看当前目录下所有可见文件的详细属性
    ls -a   列出的内容包含以“.”开头的文件
    ls -lu  最后访问时间
    ls -s   以块为单位的文件大小
    ls -t   按时间排序
    ls -F   显示文件类型
    

    ls -l

    • ls -l 的输出每行都包含7个字段
    模式              每行的第一个字符表示文件类型,“-”代表普通文件,“d”代表目录文件。
    链接数            指该文件被引用的次数
    文件所有者        指出文件所有者的用户名
    组                指出文件所有者所在的组
    大小              显示文件的字节数
    最后修改时间      文件的最后修改时间
    文件名            文件名
    
    • ls -l可以显示当前目录下目录或文件的详细属性信息

    cp

    • 查看帮助文档man cp
    • cp的作用就是读取一个文件的内容到存储器,在新的地址创建空白文件,再从存储器将内容写入新文件。(如下图把ls1.c复制,存为lc.c文件)

    ls1和ls2

    • ls1程序的作用是在当前目录显示文件名(未带参数直接显示,带参数的存入argc)
    • ls2不仅显示了文件名,还用来显示文件的详细信息,比如用户名、群组名、大小、创建时间、读写权限等。

    echostate.c和setecho.c

    echostate.c

    • 功能:查看在命令行中输入命令时是否可见,可见返回1,否则返回0

    setecho.c

    • 设置回显位的状态,命令行参数为y则开启,否则关闭。
    • 标准输入的文件描述符为0.
    • 使用tcgetattr()函数和termios结构体可获得标准输入的属性。
    • 使用tcsetattr()函数和termios结构体可以将更改后的属性设置重新写回标准输入。

    ioctl函数

    • ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。
    • ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数控制设备的I/O通道。
    • 查看帮助文档man isatty man ioctl
    • isatty:判断一个文件描述符是否指向一个终端
    • ioctl:控制驱动器
    • 程序运行结果

    filesize

    • filesize代码用st_size成员来计算文件的字节数大小,gcc后有一个警告,调用正常。

    fileinfo

    • fileinfo代码这个功能用来实现显示文件信息,建立了一个stat数据结构。先判断命令是否有操作数,有的话才能继续进行下去,如果没有报错就打印出来相关文件信息,报错就用perror将报错信息打印出来。

    spwd命令

    • spwd的功能是列出当前目录。

    who命令

    • 这个代码的思想是,从UTMP_FILE文件中读取想要的信息到存储器中,然后再用标准输出函数打印到屏幕上,最后关闭文件。
      -程序运行结果

    本周代码托管截图




    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 200/400 2/4 18/38
    第三周 100/500 1/5 10/48
    第四周 250/750 1/6 10/58
    第五周 100/850 1/7 10/68
    第六周 100/950 1/8 12/80
    第七周 200/1150 1/9 12/92
    第八周 124/1274 2/11 10/102
    第九周 205/1479 2/13 5/107
    第十周 646/2125 2/15 9/116

    参考资料

  • 相关阅读:
    Docker配置容器位置和小技巧
    firewall防火墙
    iptables防火墙常用命令
    Docker 常用命令
    Dockerfile镜像的制作
    Windows和Centos下Docker的安装配置
    ubuntu 常用命令
    microPython环境安装及使用
    Arduino上“Collect2.exe: error: ld returned 5 exit status”错误的解决方法
    基于C语言的面向对象编程
  • 原文地址:https://www.cnblogs.com/yx20145312/p/6083700.html
Copyright © 2011-2022 走看看