2017-2018-1 20155212 《信息安全系统设计基础》第4周学习总结
MyOD
- 参考教材第十章内容
- 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
- 不要把代码都写入main函数中
- 要分模块,不要把代码都写入一个.c中
- 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
#include #include #include #include #include #include #define MAXDATA 1024int main(int args, char **argv){ int od; int reclen=1; long chnum; if((od=open(argv[1], O_RDONLY))==-1) { perror(argv[1]); exit(1); } char data[MAXDATA]; int i=0; char ch; while(read(od, &ch,reclen)==reclen) { if(i
void odfunction(long num, char data[]){ long i, j; for(i=0; i<1024; i=i+4) { if(i%16==0) { printf("\n%07o\t\t", i); } printf(" %02x%02x%02x%02x\t", data[i+3], data[i+2], data[i+1], data[i]); if((i+4)%16==0) { printf("\n\t "); for (j = i - 12; j < i+4 ; j++) { if ((int)data[j] == 10) { printf(" \\"); printf("n "); } else { printf(" %c ", data[j]); } } } if (data[i+4] ==0) { printf("\n\t "); for (int j = i-i%16; data[j-3] != 0; j++) { if ((int) data[j] == 10) { printf(" \\"); printf("n "); } else { printf(" %c ", data[j]); } } break; } } printf("\n%07o\n", num);}
- 问题与解决
- Ubuntu虚拟机无法正常启动,启动后黑屏,提示“硬件不匹配”
- 刚开始以为是Ubuntu系统出了问题,于是恢复快照,回到之前的备份(当时部分代码忘记git,很尴尬)。恢复完发现还是不行,最后发现是因为我将VMWare Station升级到了14版本,与12版本中创建的虚拟机系统不兼容。
- 调试一直正常,没想到突然make后出现如下情况
- 在网上找了很多情况,试了都没有用。最后发现错误原因在于我不小心删了函数名一个字母。
- 运行结果截图
MyHead
- 命令格式: head [参数]... [文件]...
- 命令功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
char ch;while(能读取到一个字符给ch && 换行记数<10){ if(ch!=换行符) { 打印ch; } else { 换行计数++; 打印ch; }}
#include #include #include #include #include #include #define MAXDATA 1024int main(int args, char **argv){ int file; int flag=0; if((file=open(argv[1], O_RDONLY))==-1) { perror(argv[1]); exit(1); } char data[MAXDATA]; int i=0; char ch; while(read(file, &ch, 1)==1 && flag<10) { if(ch!='\n') { printf("%c", ch); } else { flag++; printf("%c", ch); } } close(file); return 0;}
-
1121231234123451234561234567123456781234567891234567890123456789011234567890121234567890123123456789012341234567890123451234567890123456
-
112123123412345123456123456712345678
- 运行结果截图
MyTail
- 命令格式:tail[必要参数][选择参数][文件]
- 命令功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
char 数据存储[MAX][MAX];char ch;int 行计数=0, 行字符计数=0;while(能读取到一个字符给ch && 行记数 =0 && i
#include #include #include #include #include #include #define MAXDATA 1024int main(int args, char **argv){ int file; if((file=open(argv[1], O_RDONLY))==-1) { perror(argv[1]); exit(1); } char data[MAXDATA][MAXDATA]; int i=0, j=0; char ch; while(read(file, &ch, 1)==1 && i =0&&k
-
012345678901234567890123456789012345678012345678901234567012345678901234560123456789012345012345678901234012345678901230123456789012012345678901012345678900123456789012345678012345670123456012345012340123012010
-
012345678012345670123456012345012340123012010
- 运行结果截图