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

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

Myod系统版本调用:

1、参考教材第十章内容

2、用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名

3、不要把代码都写入main函数中

3、要分模块,不要把代码都写入一个.c中

5、提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

实现截图:

核心代码:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdio.h>

#include <unistd.h>



void main(int argc,char *argv[])

{

    int m,n;

    m=open(argv[1],O_RDONLY,0);

    if(m==-1)

    printf("not found");

    zhuanhuan(m);

    n=close(m);

    if(n==-1)

    printf("文件关闭失败");

void zhuanhuan(int m)
{
    char temp;
    while(read(m,&temp,1)!=0)
        {
            if(temp=='\n')
                printf("\n");
                else
                {
                    printf("%x ",temp);
                }
        }
}
}

实现过程:
进程通过调用open函数来打开一个已存在的文件。
O_PDONLY只读,O_WRONLY只写,O_RDWR可读可写。
核心代码为fd=open("xxx.txt",O_RDONLY,0)

教材学习内容总结

一、Unix I/O

Linux提供少量基于Unix I/O模型系统级函数,它们允许应用程序打开、关闭、读和写文件,提取文件的元数据。

二、打开和关闭文件

进程通过调用open函数来打开一个已存在的文件。

函数头为:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

O_PDONLY只读,O_WRONLY只写,O_RDWR可读可写。

核心代码为fd=open("xxx.txt",O_RDONLY,0)

小结

1、Linux系统的读和写操作会出现不足值,应用程序必须能正确地预计和处理这种情况。应用程序不应直接调用Unix I/O函数,而应使用RIO包,RIO包通过反复执行读写操作,直到传送完所有的请求数据,自动处理不足值。

2、Linux内核使用三个相关的数据结构来表示打开的文件。

3、标准I/O库是基于Unix I/O实现的,并提供一组强大的高级I/O例程。对于大多数应用程序而言,标准I/O更简单,是优于Unix I/O的选择。

教材学习中的问题和解决过程

  • 问题1:不明白元数据的定义。

  • 问题1解决方案:
    主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。

  • 问题2:对于标准I/O理解不够透彻。

  • 问题2解决方案:未解决,希望老师上课可以进行相应的讲解。

head tail的使用

API分析:head 数字 文件名,查看文件前X行。

伪代码:

打开两个文件
读取输入的数字和文件
读取文件时,一旦字符为换行符,计数器+1
输出文件内容
当计数器的值等于读入的数字时,break退出循环
关闭文件

核心代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

void main(int argc,char *argv[])
{
    int count=0,m,n,x;
    char temp;
    x=atoi(argv[1]);//字符型转换整形,命令行读取
    m=open(argv[2],O_RDONLY,0);
    if(m==-1)
        printf("not found");
    while(read(m,&temp,1)!=0)
    {
        if(temp=='\n')
        {
            count++;
            if(count==x)
            {
                break;
            }
            else
                printf("%c",temp);
        }
        else
            printf("%c",temp);
    }
    printf("\n");
    n=close(m);
    if(n==-1)
        printf("文件关闭失败");
}

运行截图:

tail

伪代码:
打开两个文件
读取输入的数字和文件
读取文件时,一旦字符为换行符,计数器+1
关闭文件
x=计数器统计数,令计数器为0
打开文件
当计数器>=x时
输出文件内容
关闭文件

核心代码:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>



void main(int argc,char *argv[])

{

    int count=0,m,n,x;

    char temp;

    x=atoi(argv[1]);//字符型转换整形,命令行读取

    m=open(argv[2],O_RDONLY,0);

    if(m==-1)

        printf("not found");

    while(read(m,&temp,1)!=0)

    {

        if(temp=='\n')

        {

            count++;

        }

    }

    x=count-x;

    count=0;

    n=close(m);

    if(n==-1)

        printf("文件关闭失败");

    m=open(argv[2],O_RDONLY,0);

    if(m==-1)

        printf("not found");

    while(read(m,&temp,1)!=0)

    {

        if(temp=='\n')

        {

            count++;

        }

        if(count>=x)

        {

            printf("%c",temp);

        }

    }

    printf("\n");

    n=close(m);

    if(n==-1)

        printf("文件关闭失败");

}

运行截图:

代码托管

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
    - XXXX
    - XXXX
    - ...

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

1、Linux系统下的C源文件的处理方式比windows下的要更加丰富。

2、关于计算机语言中的各种运算仍需要加深理解。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第三周 114/114 3/3 20/20
第四周 136/250 2/5 18/38
第五周 500/1000 3/7 22/60
第六周 300/1300 2/9 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2017-10-15 18:31  Lee.X  阅读(300)  评论(2编辑  收藏  举报