【深入理解计算机系统】CSAPP-实验六:ShellLab(未完成)

前言

对应书本第八章内容。

通过写一个简单的Unix shell program,来熟悉程序控制以及信号处理。

本机使用win10 +wsl2.0 + ubuntu18.04完成实验。

点击查看我的全部代码

reference

CSAPP LAB

CSAPP深入理解计算机——shellLab(2018)

命令

  1. 运行my shell
sudo make
./tsh

任务

该实验在tsh.c文件中实现了大部分的框架,需要自己完成以下函数内容:

  • eval:解析和解释命令行的主例程,大约70行。
  • builtin_cmd:识别并解释内置命令:quitfgbgjobs,大约25行。
  • waitfg:等待前台作业完成
  • do bgfg bg and fg built-in commands的实现
  • sigchld_handlerSIGCHLD信号的处理函数
  • sigint_handlerSIGINT信号的处理函数
  • sigtstp_handlerSIGTSTP信号的处理函数

要求

  • 提示应为字符串tsh>
  • 用户键入的命令行应包含一个名称和零个或多个参数,所有参数均由一个或多个空格分隔。 如果名称是内置命令,则shell应该立即处理它并等待下一个命令行。 否则,shell应该假定名称是可执行文件的路径,它在初始子进程的上下文中加载并运行。
  • shell不需要支持管道|或I/O重定向<>
  • 键入ctrl-cctrl-z)应该会导致SIGINTSIGTSTP)信号发送到当前前台作业以及该作业的任何后代,如果没有前台作业,那么信号应该没有效果。
  • 如果命令行以结束,则shell应该在后台运行作业,否则它将在前台运行该作业。
  • 每个作业都可以通过进程ID(PID)或作业ID(JID)进行标识,该ID是tsh分配的正整数。
  • shell需要支持以下内置命令:quitjobsbg <job>fg <job>
  • shell应该回收所有僵死子进程,如果任何作业由于接收到未捕获到的信号而终止,则shell应该识别此事件并打印一条消息,其中包含该作业的PID和有问题的信号的描述。

评估

共有16个trace文件。依次过关。

可以通过对比看出是否完成任务:

make test01
make rtest01

内容

未完成。

看了两遍书,没有做下去的动力。因为没有碰到这个需求。

需要的时候会回头的。

代码是copy完善的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值