课上作业补交 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:
- 学***d的使用,提交至少3个应用截图
- xxd的主要功能是什么?需要使用什么系统调用来实现?写出你的推导过程,命令
- 写出实现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的伪代码
没有完全理解,在学习后再回答。