实验三 Linux进程的创建与控制
一、实验目的
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)分析进程竞争资源现象,学习解决进程互斥的方法。
(4)了解Linux系统中进程通信的基本原理。
二、实验预备内容
阅读Linux的fork.c源文件,分析进程的创建过程。
三、实验内容
1. 进程的家族关系
在主程序中用3个fork()调用,最后输出一个字符或字符串,运行此简单的程序,观察并分析运行结果。
2. 进程的创建
编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和字符“c”。观察纪录屏幕上的显示结果,并分析原因。
3. 进程的控制
修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。
如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
四、实验源程序(仅供参考)
1. 用进程的家族关系
main()
{
fork();
fork();
fork();
printf(“S”);
}
查看运行结果并分析进程的创建和调用过程。
2.进程的创建
#include
main()
{ int p1,p2;
while((p1=fork())==-1); /创建进程p1,创建成功后退出/
if(p1= =0) /CPU运行p1/
putchar(…b?); /输出字符b/
else
{
while((p1=fork())==-1); /创建进程p2, 创建成功后退出/
if(p1= =0)
putchar(…c?);