泡泡网 "Be fresh and eager every morning, and tired and satisfied every night." --Kent Beck
LAB02: Processes
准备工作:
- 学习 man 命令的用法,通过它查看 fork 和 kill 系统调用的在线帮助,并阅读参考资料,学会 fork 与 kill 的功能与用法;
- 复习 C 语言的相关内容。
实验内容:
- 阅读process.c,并按照注释把程序补充完整(有三处需要填写代码,用到fork()和kill()系统调用)。
- 在补充之前,先猜想一下这个程序的运行结果。假如运行./process 20,输出会是什么样?
- 然后补完程序,运行程序。可以多运行一会儿,并在此期间启动、关闭一些其它进程,看process的输出结果有什么特点。
- 开另一个终端窗口,运行“ps aux|grep process”命令,看看process究竟启动了多少个进程。
- 回到程序按数字键+回车尝试杀掉一两个进程,再到另一个窗口看进程状况。
- 按q退出程序再看进程情况。
- 完成实验报告。
实验报告:
- 你最初认为运行结果会怎么样?
- 实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。
- proc_number 这个全局变量在各个子进程里的值相同吗?为什么?
- kill 系统调用在程序中使用了几次?每次的作用是什么?执行后的现象是什么?
- 使用 kill 系统调用可以在进程的外部杀死进程。进程怎样能主动退出?这两种退出方式哪种更好一些?
- 把你的程序源代码附到实验报告后。
黑ICP备05004784号