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/