课上作业补交 p526/syscalls1

P526代码检查:
1 编译运行p524代码,提交运行结果截图
2 MAXLINE的值是多少?提交Ubuntu中查找这个值的命令和结果截图
3 p525 eval 函数中调用的Fork()函数需要什么头文件?你是如何查找的?
4 Fork() 与fork()什么关系?

1.运行p524代码:
下载老师所提供的代码,里面包含书上代码和头文件,之后进行编译
有可能是因为系统和库的原因,gcc命令直接编译无法通过,所以按照老师说得步骤,使用make file进行编译得:

出现可执行文件shellex,运行得:

2.使用grep -nr进行查看头文件中MAXLINE的值
因为我们不知道MAXLINE在哪个头文件中,直接在系统找过于慢,所以要缩小范围
头文件目录在系统的 /usr/include 目录下,所以输入命令:grep -nr "MAXLINE" /usr/include
发现MAXLINE的值为8192

3.p525 eval 函数中调用的Fork()函数需要什么头文件?你是如何查找的?
使用man -k 进行寻找

4.Fork() 与fork()什么关系?
进入fork中查看详细内容

fork创建一个子进程

所以Fork()与fork()是父子进程调用的关系

syscalls1:

  1. 学***d的使用,提交至少3个应用截图
  2. xxd的主要功能是什么?需要使用什么系统调用来实现?写出你的推导过程,命令
  3. 写出实现xxd的伪代码

学***d的使用,提交至少3个应用截图

-v-i

-ps

经查询相关资料,xxd的功能如下:

    -a          缺省忽略转换: 使用‘*’替换空行.
    -b          二进数数据转储 (与 -ps,-i,-r不兼容). 默认为16进制.
    -c cols    每行多少列octets(特制8比特的字节). 默认为16列(-i: 12, -ps: 30).
    -E          使用EBCDIC字符集. 默认为ASCII字符集.
    -e          小端模式转储 (与 -ps,-i,-r不兼容).
    -g          在正常输出中,每组八位字节数. 默认为2个 (-e: 4).
    -h          输出此帮助.
    -i          使用C语言文件样式输出.
    -l len      在len个八位字节后停止.
    -o off      在off个偏移量后开始输出.
    -ps         以在行后添加16进制转储内容的格式输出.
    -r          逆向操作: 转换(或修补) 十六进制内容为二进制内容.
    -r -s off   在off个偏移量后开始转换16进制内容为二进制内容
    -s [+][-]seek  start at <seek> bytes abs. (or +: rel.) infile offset.(没看懂)
    -u          使用大写字母进行十六进制表示.
    -v          显示版本: "xxd V1.10 27oct98 by Juergen Weigert".

写出实现xxd的伪代码
没有完全理解,在学习后再回答。

posted @ 2019-11-13 17:28  20175206ldc  阅读(656)  评论(0编辑  收藏  举报