进程创建是操作系统执行程序的需要或者用户或进程要求创建一个新的进程。进程创建首先是在进程表中为进程建立一个进程控制块PCB,采用fork()系统调用将复制执行进程的PCB块,U区和内存图像到新的进程。 主要内容包括:进程创建原语、fork()系统调用的编程举例.
fork()函数的程序设计方法:
fork()系统调用格式:
#include<types.h>
#include
pid_tfork()
返回值:子进程返回0,父进程返回子进程ID,出错返回-1。
功能:创建一个进程。
fork的三个返回值
编程举例:
编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕中显示一个字符;父进程显示字符a,子进程分别显示b和c。试观察记录屏幕上的显示结果,并分析。
代码如下:
#include <stdio.h>
int fork();
int 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');
}
printf("\n");
return 0;
}
实验结果:
实验结果分析:
fork()的功能是创建一个子进程,父进程和子进程的代码都是上面的所有代码,不过子进程的代码只从创建次子进程的地方开始执行。
程序在创建子进程时返回两个值,一个任意正整数(子进程的ID)返回给父进程;一个0返回给子进程,结果为abc。
fork()创建进程所需的时间可能多于输出一个字符的时间,但各个进程的时间片的获得却不用是一个顺序的,所以输出abc的排列都有可能。
网友评论