泡泡网 "Be fresh and eager every morning, and tired and satisfied every night." --Kent Beck

LAB02: Processes

准备工作:

  1. 学习 man 命令的用法,通过它查看 fork 和 kill 系统调用的在线帮助,并阅读参考资料,学会 fork 与 kill 的功能与用法;
  2. 复习 C 语言的相关内容。

实验内容:

  1. 阅读process.c,并按照注释把程序补充完整(有三处需要填写代码,用到fork()和kill()系统调用)。
  2. 在补充之前,先猜想一下这个程序的运行结果。假如运行./process 20,输出会是什么样?
  3. 然后补完程序,运行程序。可以多运行一会儿,并在此期间启动、关闭一些其它进程,看process的输出结果有什么特点。
  4. 开另一个终端窗口,运行“ps aux|grep process”命令,看看process究竟启动了多少个进程。
  5. 回到程序按数字键+回车尝试杀掉一两个进程,再到另一个窗口看进程状况。
  6. 按q退出程序再看进程情况。
  7. 完成实验报告。

实验报告:

  1. 你最初认为运行结果会怎么样?
  2. 实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。
  3. proc_number 这个全局变量在各个子进程里的值相同吗?为什么?
  4. kill 系统调用在程序中使用了几次?每次的作用是什么?执行后的现象是什么?
  5. 使用 kill 系统调用可以在进程的外部杀死进程。进程怎样能主动退出?这两种退出方式哪种更好一些?
  6. 把你的程序源代码附到实验报告后。

下载:


黑ICP备05004784号