CSAPP shelllab

虽然信号是一个比较陌生的话题,但其实大部分需要用的技巧都在课本和 handout 中给出了,所以并不是特别困难。

eval

基本可以参考书上的来写。只需要注意创建一个新进程时需要给它分配一个新的进程组,事实上 handout 中已经指出了这一点。

builtin_cmd

直接判断就可以了。比较让我纠结的是执行 quit 时是否需要先回收所有子进程,看起来好像不需要的样子。

do_bgfg

主要难度在于对输入的处理和对异常情况的判断。结合 tshref 的结果书写即可。

waitfg

按照书上的思路,使用 sigsuspend 进行等待即可。

sigchld_handler

写的时候犯了一些错误。需要注意它的返回值,以及对于每种返回状态(正常返回,收到信号终止,收到信号暂停)进行相应的处理。

sigint_handler & sigtstp_handler

基本一致的两个函数。只需要向前台进程发送对应的信号即可。


撒花!


CSAPP shelllab
https://je3ter.github.io/2024/02/17/CSAPP/CSAPP shelllab/
作者
Je3ter
发布于
2024年2月17日
许可协议