CSAPP Shell Lab sakura🌸框架实验框架本实验目的是通过Linux信号函数实现简单的Shellmain:在main程序中,主要是使用`signal`注册当内核向Shell程序发送信号时,应该调用的处理函数 然后使用while循环,每一次循环打印shell提示符tsh>,以及等待用户输入,用户输入完成后调用eval进行解析用户命令while循环在
实验四:Shell-Lab(上) 官方地址:http://csapp.cs.cmu.edu/3e/labs.html个人仓库地址:https://gitee.com/sun-hongwei8011/csapp-lab.git无法进入官方地址的读者,可以直接克隆仓库。仓库中包含了官方提供的压缩包和writeup文件。PS:甩个锅,如果你阅读的时候发现格式很别扭,或者是段落某处突然冒出意义不明的字符(...
jobs的功能就是列出tsh创建的所有存在的作业,这个其实 lab 自己已经实现了,后续会提到。 bg <job>。将某个中止(stopped)的作业恢复到后台执行。<job>的表示方式可以是PID或者JID(组号,具体见 WriteUp) fg <job>。将某个中止的作业恢复到前台执行。 2、代表用户执行可执行文件。通过<path> <args[1], ...>...
仔细阅读CSAPP第八章的异常控制流和lab的writeup 测试shell执行第n组测试数据的输出,打印shell预期输出,包含shell所有预期输出结果,先看文件输出,了解命令格式再编码,修改文件中字段,加参数并去掉参数 , , ,, , 很常用,可通过命令手册查看使用细节,和选项对也很有用 实现信息处理函数,确保发送和信号给整个前台进程...
shell因该回收所有僵尸进程,若任何一个作业因为接收到它没有捕捉到的信号而终止,那么tsh应该识别该事件,并打印PID和错误描述消息 提示 仔细阅读CSAPP第八章的异常控制流和lab的writeup make testn测试shell执行第n组测试数据的输出,make rtestn打印shell预期输出,tshref.out...
shell因该回收所有僵尸进程,若任何一个作业因为接收到它没有捕捉到的信号而终止,那么tsh应该识别该事件,并打印PID和错误描述消息提示 仔细阅读CSAPP第八章的异常控制流和lab的writeup make testn测试shell执行第n组测试数据的输出,make rtestn打印shell预期输出,tshref.out包含shell所有预期输出结果,先看文件输出,...
这一部分可以抄书。具体需要搞清楚fork()会创建一个新的进程,而execve()则相当于用新的进程"覆盖"当前进程。因此如果想要实现shell的调用需要先fork()再在子进程里execve() 根据writeup的提示需要给子进程分配组id,在eval中新建进程需要调用addjob()来修改进程表中的内容,因此需要阻塞其它信号以免出现问题。
CSAPP-Shell Lab 思路记录,>提供的工具:-`parseline`:获取参数列表`char**argv`,返回是否为后台运行命令(`true`)。-`clearjob`:清除`job`结构。-`initjobs`:初始化`jobs`链表。-`
今天的报告是shell lab,要求我们自己写一个shell,通俗地讲就是要造一个沟通用户与Linux内核的渠道,shell为各种应用程序提供了一个运行的界面,用户通过shell进行各种系统操作。关键的是要理解多进程的概念和运作方式,以及信号的作用和使用方法。 (今天的水印有!了!灵!魂!) (有同学因为抄袭网上的直接被判0分了,...
https://zion4h.github.io/2022/06/06/CSAPP-LAB-6/ 准备 除了看 shlab.dvi (cmu.edu) 和 Introduction to Computer Systems 15-213/18-243, spring 2009 (cmu.edu) 外,这个实验还需要仔细阅读书上第八章异常控制流部分,而书中未补全代码可在 csapp.cs.cmu.edu/3e/ics3/code/src/csapp.c 搜索(...