一.实验目的
(1)理解进程与程序的联系与区别以及并发程序的基本特性。
(2)学会在在程序中使用fork() 函数创建克隆式子进程的基本编程方法。
二.实验内容
命令进程的创建与并发执行
三.实验主要步骤
实验2.1 命令进程的创建与并发执行
①启动Linux,进入黑屏界面;
②在tty1上用root账号登录,在tty2和tty3上则分别以普通用户账号登录;
③在tty1上输入命令“ps –help”,即在tty1上创建命令进程ps,以查看ps命令的help信息;
④在tty2上输入命令“man man”,即在tty2上创建命令进程man,以查看man命令的help信息,不要终止该man命令;
⑤在tty3上执行命令“man pstree”,即在tty3上创建命令进程man,查看pstree命令的help信息,同样也不要终止该man命令;
⑥在tty1上执行ps命令,查看本控制台上所有进程的基本信息;
⑦在tty1上执行pstree命令,查看进程的分层结构。
⑧再在tty1上执行ps命令,查看本系统的所有进程的详细信息,并从中找到并记下tty2上的man命令进程的PID;你能看到ps命令输出的全部信息吗?
如果不能,可以利用Linux的“重定向”或“管道”功能,例如,可输入如下管道命令行:ps –aux | more
该命令行的语义是:将ps命令的输出结果作为输入传递给more命令(分页显示),并执行more命令。)
⑨撤消tty2上的man命令进程;
⑩再执行ps命令,查看被撤消的进程是否还存在;
⑾切换到tty2,观察man命令是否还在执行或已终止;再切换到tty3,观察man命令是否还在执行或已终止;
⑿注销 (不要关机)。
实验2.2 使用fork创建进程
本实验使用系统调用fork()创建多个子进程,实现多进程并发执行。
参考步骤:
1.在tty1上使用root用户登录,如图1所示。

2.在tty2以普通账户登录,结果如图2所示。

3.在tty3也用普通用户登录,结果如图3所示。

4.在tty1输入命令 ps –help 创建ps进程,如图4所示。

5.在tty2输入man man 查看man命令的帮助信息,结果如图5所示。

6.在tty3上执行man pstree命令,结果如图6所示。

7.在tty1上使用ps命令查看本控制台的进程信息,结果如图7所示。

8.在tty1使用ps tree查看进程树信息,回显结果如图8所示。

9.使用ps -aux | more 查看tty2的man man命令进程的详细信息,结果如图9所示。

10.用kill命令撤销第10步中的进程信息,命令如图10所示。

11.再次使用ps -aux查看进程信息,发现进程号为1725的指定进程已经没有了,如图11所示。

12.使用fork创建进程:通过老师提供的唯一指定代码写入到用户家目录下的test2.c文件中,该文件代码如图12所示。

13.使用gcc test2.c命令编译该程序,然后多次运行该程序,结果如图13所示。
