ICS shell lab总结

本文是对ICS shell lab的总结,重点介绍了eval()的实现思路,强调了处理SIGINT、SIGCHLD和SIGTSTP的handler()策略。文章还探讨了等待前台进程运行、Unix I/O重定向以及满足lab安全性检查的难点和解决方案。
摘要由CSDN通过智能技术生成

ICS shell lab总结

lab简介

本lab的目的是实现一个支持基本shell功能和I/O重定向功能但不支持管道功能的tsh(tiny shell),本lab中基本框架已经拉好,只要实现以下功能即可。
eval():对外壳命令行求值
handler():分别对SIGINT,SIGCHLD,SIGTSTP处理。
本lab只需要通过24个trace测试点即可

eval()实现思路

eval()在CSAPP课本里面有一个naive版本,基本包括了主要功能框架。但是注意课本里和lab里面用的数据结构不完全一样,而且lab里面没有分割各个函数模块。
而且lab中要做好I/O处理和信号避免冒险的处理工作。
既然是总结,我就不重复代码了,我写一下伪代码,伪代码很紧凑,会意即可。

void eval(tok) {
    bg=parseline(buf,argv);//需要一个buf,因为praseline会改变cmdline
    deal_io();//处理I/O
    block_sig();//堵塞信号以防冒险
    if (builtin_cmd==true) {
        i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值