0.仔细看pdf,尤其是hint部分。

1.先抄书上的代码,然后再添加书上没有的功能。做到一定程度后,测试已有的功能,要不然不好改正。注意规范输出格式。

2.WNOHANG,这个不用说了。

3.调用deletejob和更改state都应改放进sigchld_handler中,sigint和sigtstp的handler应该仅仅捕获信号并传给前台的进程组。

4.waitpid也应该只在sigchld_handler中出现,而且必须仅仅出现一次。waitfg中不应该调用waitpid,否则会和sigchld_handler产生回收竞争。

5.发送sigint,sigtstp,以及sigcont信号时要注意,传进-pid而不是pid,以便发送给整个进程组。否则trace11,12,13会有麻烦。子进程fork之后execve之前,注意要setgpid(0, 0)。

6.由于你的sigchld_handler要处理stop的进程,所以要加上WUNTRACED。然后循环里要分情况判断WIFEXITED,WIFSIGNALED,WIFSTOPPED。这三个函数会特别有用。

7.fg进程最多只有一个,所以一旦产生就必须调用waitfg,do_bgfg函数里也是。

8.一定要注意使用sigprocmask,pdf中也写了。由于addjob在eval中调用,deletejob在sigchld_handler中调用,很可能出现add之前就delete的情况。所以要在fork之前调用sigprocmask,屏蔽掉sigchld信号,然后add之后再解除。由于子进程也屏蔽掉了这个信号,所以要在fork之后execve之前解除掉。

9.waitfg的循环里注意调用sleep。

ICS lab9 TinyShell 的10条建议相关推荐

  1. 成为最差开发者的10条建议

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 这里有个[1024]红包等你来领取 昨天在devto上面 ...

  2. 【AI初识境】给深度学习新手开始项目时的10条建议

    这是专栏<AI初识境>的第12篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 在成为合格的深度学习算法工程师,尤其是工业界能够实战的调参选手之前,总会踏足很多的坑. 今 ...

  3. 杜克大学教授:提高学术写作水平的10条建议!

    本文作者迈克尔·芒格2000年起担任杜克大学政治学系主任,著有<政策分析:选择.冲突和实践><解析政治学>等作品.文章载于<高等教育纪事报>,原标题10 Tips ...

  4. 10年老兵给程序员的10条建议!

    2019独角兽企业重金招聘Python工程师标准>>> 程序员虽然薪资待遇好,但是也得付出努力,技术好才行.特别是对于刚刚进入编程工作的新手程序员和正在学习编程的同学来说,一写代码就 ...

  5. 10年老兵给程序员的10条建议! 1

    程序员虽然薪资待遇好,但是也得付出努力,技术好才行.特别是对于刚刚进入编程工作的新手程序员和正在学习编程的同学来说,一写代码就报错,出bug.作为一个工作了10年+的老兵,总结了下面10条建议送给程序 ...

  6. 避免线上故障的10条建议

    背景 没用的不多说了,这10条建议条条都是血泪的教训. 内容 1.谨慎大切面 引发问题示例: 之前有次故障,因为一个大切面里包含了一个无界队列,直接out of memory了. 原理和最佳实践: 1 ...

  7. 提高Axure设计效率的10条建议 (转)

    Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有接受过任何正式培训的情况下进行使用.他们可能不知道的是他们可能没有以恰当的方 ...

  8. 别坐在金矿上捡垃圾:给管理者的10条建议

    最近,有人给我分享了一张图. 看完之后,我还是挺感慨的.让我有了更多思考. 电视,是一种"消费品".房子,是一种"资产". 更多时候,我们应该从"资产 ...

  9. [儿童益智玩具]怎么玩?儿科学会给出了10条建议

    除了选购玩具之外,关于买回来的[儿童益智玩具]怎么玩? 儿科学会也给出了10条建议.强烈安利家长们收藏必看! 1 认识到童年时期(特别是婴儿期)儿童益智玩具最重要的目的不是教育,而是给孩子营造温暖.有 ...

最新文章

  1. iOS 设置View阴影
  2. 移动文件流的读写指针---fseek
  3. LiveVideoStack主编观察02 / 附赠专属优惠码
  4. c汇编语言例题,汇编语言例题分析.doc
  5. 数据:灰度比特币信托基金溢价达41%创近一年新高
  6. 【Spark调优】内存模型与参数调优
  7. 入行数据科学,仅需6步
  8. BOJ 2773 第K个与m互质的数
  9. 开发人员最常用的 10 大容器安全工具
  10. 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)
  11. TCP/IP路由技术第一卷动态路由知识回顾
  12. 12位串行AD转换器TLC2543与单片机的接口设计与编程
  13. PMP——第3章 项目经理的角色
  14. 仙人掌之歌——上线运营(1)
  15. 计算机二级新题word,计算机二级word试题最新.pdf
  16. 为什么谷歌会从零开始构建一个全新的操作系统?
  17. Microsoft Visual Studio C++2022 Windows 11 SDK环境
  18. camera摄像原理之三:色温和自动白平衡
  19. 【java项目】飞机大战
  20. python下载链接下载文件_python从下载链接下载文件到本地

热门文章

  1. cvtres.exe无法正常启动_启动盘介绍
  2. python字符串说法错误的是_【单选题】关于Python字符串的表示方法,下列说法错误的是: A. 字符串是字符的序列表示,只能由...
  3. python容器装水_Python版LeetCode11. 盛最多水的容器
  4. 【openMV】openMV之测距
  5. TCP协议的部分解析(2)
  6. 中文乱码java_JAVA中文乱码问题应该怎么解决?
  7. c语言数据的自动转换类型吗,c语言的自动类型转换
  8. Spring面试之bean作用域
  9. CSRF跨站请求伪造攻击
  10. JavaScript tab页