此为本人在进行实验时所做的实验日志,仅供参考。
一、比较trace09~10执行不同结果,编程实现内建命令bg和fg的do_bgfg()处理函数:
首先在之前实验的基础上执行trace09~10比较不同,得到结果如下:
可以看到缺少了对bg和fg指令的处理,直接跳过,于是查看bg和fg指令的用法得到:bg指令可以将一个在后台暂停的命令变成继续执行,fg可以将后台中的命令调制到前台继续运行,而加上%表示作业,不加表示进程(通过练习题7-1-1得到)。所以可以进行编程得到如下代码:
即将do_bgfg函数增加一个if判断分支,在接收到bg或fg命令后发送SIGCONT信号给所有的进程,然后将某个指定进程的状态切换为BG或者FG,由此实现bg和fg指令
二、验证trace09~10:
trace09跟踪文件主要是增加了一条bg %2指令,即将作业号为2的作业调制后台运行;而trace10跟踪文件主要是增加了一条fg %1指令,即将作业号为1的作业调制前台运行,最终将我的代码进行测试,得到测试结果如下:
可以看到和上面的标准结果一致,说明代码运行正确。
三、验证trace11~15并解释与记录: