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

    2017-2018-1 20155318 《信息安全系统设计基础》第四周学习总结

    教材学习内容总结

    课上实践

    1. 参考教材第十章内容
    2. 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
    3. 不要把代码都写入main函数中
    4. 要分模块,不要把代码都写入一个.c中

    实现

    • man od

    • 上周代码

    • 如何实现系统调用

    • open:UNIX系统的系统调用函数,区别于C语言库函数fopen。包含在头文件#include <fcntl.h>中,两个函数

    int open(constchar*pathname, int flags);    
    int open(constchar*pathname, int flags, mode_t mode);
    

    成功则返回文件描述符,否则返回-1

    • read
      通过 man 2 read 来了解相关知识

    返回值-1表示一个错误,而返回值0表示EOF。否则,返回值表示的是实际传送的字节数量。

    • 对上个版本的myod进行修改:
    1. 通过调用open函数来打开文件:fd=open(argv[1], O_RDONLY,0);
    2. 通过read函数来读取文件:read(fd,&ch,1)!=0

    运行结果

    I/O重定向

    • Unix外壳提供I/O重定向操作符,允许用户将磁盘文件和标准输入输出联系起来
    • I/O重定向工作:一种方式是使用dup2函数
    • dup2函数拷贝描述符表表项oldfd到描述符表表项newfd,覆盖描述符表表项newfd以前的内容。如果newfd已经打开,dup2会在拷贝oldfd之前关闭newfd

    Linux中open, read, write, seek, close

    参考调用这些库函数时需要用的头文件,下面是对应的系统调用

    文件的打开
         FILE *fopen( "路径+文件名","读写模式");
         FILE *fopen(const char *filename, const char *mode);
         读写模式:(1)r -- 用于读 (2)w -- 用于写 (3)a -- 用于写,且文件必须存在
    
    文件的写入
         fwrite("写入的内容",每项字节数,长度,写入的文件的FILE指针);
         size_t fwrite(const void *buffer,size_t size,size_t count,FILE *stream);
         另外,strlen()函数可以获得字符串长度。
    
    文件的关闭
         fclose(FILE类指针);
         fclose(FILE *pFile)
         文件关闭后,写在文件缓冲区的内容才正式写入到文件中。
    
    文件指针定位
        fseek(FILE类指针,偏移量,起始位置)
        int fseek( FILE *stream, long offset, int origin );
        起始位置:
        SEEK_CUR: 当前位置
        SEEK_END: 结尾处
        SEEK_SET: 开头处
    
    文件的读取
        fread("存放读取信息的字符串",每项字节数,长度,读入的文件的FILE指针);
        size_t fread(void *buffer,size_t size,size_t count,FILE *stream);
        其中,第一个参数可以是字符数组的名称。比如:
        char ch[100];
        fread(ch,1,100,pFile);
    

    head、tail

    • 通过运行“head xxx.c”和“tail xxx.c”可以发现,head、tail的作用分别是显示一个文件的前十行和后十行

    • 使用命令“man -k head | grep 1”、“man -k tail | grep 1”查看帮助文档

    • head,tail使用

    • 编写main.c和headtest.c
    • 运行是产生如下问题:(暂未解决)
    代码链接
  • 相关阅读:
    Coded UI Test(二)创建一个Coded UI Test
    Coded UI Test(一)概述
    面向接口编程思想与实现可维护的代码 (一)
    KMP算法字符串模式匹配算法
    新的博客,新的起点
    第十三章:字符串 《Thinking in java》学习笔记
    稀疏矩阵三元组表来压缩存储及转置
    eclipse svn的使用+小组开发
    第十一章:持有对象 《Thinking in java》学习笔记
    双端队列(deque)课堂跳了的内容
  • 原文地址:https://www.cnblogs.com/lxy1997/p/7674962.html
Copyright © 2011-2022 走看看