《Linux 操作系统设计实践》实验一:进程管理实验目的:(1)加深对进程概念的理解,明确进程和程序的区别.(2)进一步认识并发执行的实质.(3)学习通过进程执行新的目标程序的方法。(4)了解Linux 系统中进程信号处理的基本原理.实验环境:Red Hat Linux实验内容:(1)进程的创建编写一段程序,使用系统调用fork()创建两个子进程,当此进程运行时,在系统中有一个父进程和两个子进程活动,让每一个进程在屏幕上显示一个字符,父进程显示字符“a”;子进程分别显示字符“b"和字符“c”,试观察记录屏幕上的显示结果,并分析原因。程序代码:#includeint main(){int p1 ,p2 ;while((p1=fork())==—1); if(p1==0) putchar(’b’);else{while((p2=fork())==—1); if(p2==0) putchar(’c');else putchar('a’); }return 0;}运行结果:bca分析:第一个 while 里调用 fork() 函数一次,返回两次.子进程 P1得到的返回值是 0,父进程得到的返回值是新子进程的进程 ID(正整数);接下来父进程和子进程 P1 两个分支运行,推断 P1==0,子进程 P1 符合条件,输出“b”;接下来 else 里面的 while 里再调用fork()函数一次,子进程 P2 得到的返回值是 0,父进程得到的返回值是新子进程的进程 ID(正整数);接下来推断 P2==0,子进程 P2符合条件,输出“c”,接下来父进程输出“a”,程序结束。(2)进程的控制①修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。程序代码:#includeint main(){ int p1,p2;while((p1=fork())==—1);if(p1==0)printf("Child1 is running!\n");else{while((p2=fork())==-1);if(p2==0)printf("Child2 is running!\n");elseprintf("Father is running!\n”);}return 0;}运行结果:Child1 is running!Child2 is running!Father is running!分析:本实验和上一个实验一样,只是将每个进程输出一个字符改为每个进程输出一句话.第一个 while 里调用 fork() 函数一次,返回两次。子进程 P1 得到的返回值是 0,父进程得到的返回值是新子进程的进程 ID(正整数);接下来父进程和子进程 P1 两个分支运行,推断 P1==0,子进程 P1 符合条件,输出“Child1 is running!";接下来 else 里面的 while 里再调用 fork()函数一次,子进程 P...