进程的创建实验报告
实验目的
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的情况,可以表示是哪个进程先创建成功。
好吧,我编不下去了,第一篇博客文章,感谢支持!(*^▽^*)