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

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

课堂实践

  • 参考教材第十章内容
  • 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
  • 不要把代码都写入main函数中
  • 要分模块,不要把代码都写入一个.c中
  • 提交测试代码和运行结果截图,提交调试过程截图,要全屏,包含自己的学号信息
  • 课上上传代码到码云

    od命令

  • od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。
  • 常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。
    -a:此参数的效果和同时指定“-ta”参数相同;

-A::选择以何种基数计算字码;

-b:此参数的效果和同时指定“-toC”参数相同;

-c:此参数的效果和同时指定“-tC”参数相同;

-d:此参数的效果和同时指定“-tu2”参数相同;

-f:此参数的效果和同时指定“-tfF”参数相同;

-h:此参数的效果和同时指定“-tx2”参数相同;

-i:此参数的效果和同时指定“-td2”参数相同;

-j或--skip-bytes=:略过设置的字符数目;

-l:此参数的效果和同时指定“-td4”参数相同;

-N或--read-bytes=:到设置的字符树目为止;

-o:此参数的效果和同时指定“-to2”参数相同;

-s或--strings=:只显示符合指定的字符数目的字符串;

-t或--format=:设置输出格式;

-v或--output-duplicates:输出时不省略重复的数据;

-w或--width=:设置每列的最大字符数;

-x:此参数的效果和同时指定“-h”参数相同;

--help:在线帮助;

--version:显示版本信息。

来自: http://man.linuxde.net/od

实现如下

1071472-20171014172229480-1782777244.png

相关知识:

本次实践主义用到一些系统级I/O输入,主要体现在如下

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
void main(int argc,char *argv[])
{
}

使用open函数将filename转换为一个文件描述符,并且返回描述数字。

学习教材附录A,第十章内容

第十章主要学习系统级I/O。
输入操作是从I/O设备复制数据到主存,
输出操作是从主存复制数据到I/O设备。
附录A主要讲错误处理:

  • Unix系统中的错误处理:
    主要有Unix风格的错误处理;
    Posix风格的错误处理;
    GAI风格的错误处理。

完成head,tail的使用,相关API的分析,伪代码,产品代码,测试代码的编写

head使用:

API分析:head+数字+文件名,查看文件的前n行。
主要伪代码:

 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);
    }

实现截图:
1071472-20171015204844871-1634561542.png

  • 首先,打开文件,读取输入的数字和文件,在读取文件时,一旦字符为换行符,计数器+1,其次输出文件内容,当计数器的值等于读入的数字时,break退出循环最后关闭文件。
    代码实现如下:

    tail

    API分析:tail+数字+文件名,输出文件的最后一部分,打印最后10行到标准输出中。
    伪代码:
  • 首先,打开个文件,读取输入的数字和文件,在读取文件时,一旦字符为换行符,计数器+1,再关闭文件。n=计数器统计数,令计数器为0
    其次,打开文件,当计数器>=n时,输出文件内容,并关闭文件。
    主要代码实现如下:
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++;

        }

    }

实现截图:
1071472-20171015204903605-1385591910.png

转载于:https://www.cnblogs.com/l20155233/p/7667929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值