进程的创建实验报告

实验目的
1.熟悉进程的概念(PCB+程序段+数据)
2.掌握进程的创建方式
3.理解多进程系统的运行

实验任务

编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。

fork()函数:创建一个新进程。
使用方法:int fork();
0:创建子进程,从子进程返回的id值;
大于0:从父进程返回子进程的id值;
-1:创建失败。

进程的创建实验报告

部分代码

void 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');

               }

}   

修改代码

void main()

{

              int p1,p2;

              while((p1=fork())==-1);

              if(p1==0)

                             putchar('b');

              else

              {

                             putchar('a');

                             while((p2=fork())==-1);

                             if(p2==0)

                                             putchar('c');

               }

}   

实验报告
1.实验目的
 
2.实验内容(源代码)
  
3.实验结果分析

好吧,接下来才是我的实验内容,作为一个技术小白,想要完成本实验,首先你要有Linux系统的环境,本人电脑装的是VMware虚拟机,系统是Ubuntu14.04,至于如何编译链接运行程序,在此不多赘述。

这是部分代码的运行截图:

进程的创建实验报告

这是修改代码的运行截图:

进程的创建实验报告

多次运行我们可以发现:前者的运行结果主要是b,c,bc,cb还有若干空格,后者才出现的a,回归到代码来分析:

while((p1=fork())==-1);fork()在当前进程中创建一个子进程,如创建失败,fork()返回-1给p1,因为是while循环,此语句会一直执行到创建成功为止,while((p2=fork())==-1);同理,之后两者都执行了if(p1==0)putchar('b');显然所有只输出一个b的结果是创建p1成功的,只输出一个c的结果是创建p2成功的,没有输出的话是都没有创建成功,而修改代码用a隔开两个循环,如果出现cb或bc的情况,可以表示是哪个进程先创建成功。

好吧,我编不下去了,第一篇博客文章,感谢支持!(*^▽^*)