首页 理论教育 如何使用for函数成功创建进程

如何使用for函数成功创建进程

时间:2023-10-31 理论教育 版权反馈
【摘要】:成功调用fork()函数后,当前进程实际已经分裂为两个进程:一个是原来的父进程,另一个是刚刚创建的子进程。设计步骤1)在Vim中创建一个新工程文件,命名为“example9_2.c”。2)在“example9_2.c”中创建的代码如下所示。图9-7 用fork()函数创建进程的运行结果2.vfork()函数vfork()函数的调用方法与fork()函数完全相同,也是用来创建一个新进程。

如何使用for函数成功创建进程

Linux主要提供了fork()、vfork()的进程创建方法。具体介绍如下。

1.fork()函数

系统调用fork()是创建一个新进程的方法。在命令行输入“manfork”,可以获得fork()函数的原型。

978-7-111-33316-6-Chapter09-19.jpg

fork()函数有两个返回值,即调用一次返回两次。成功调用fork()函数后,当前进程实际已经分裂为两个进程:一个是原来的父进程,另一个是刚刚创建的子进程。父子进程在调用fork()函数的地方分开。fork()函数有两个返回值:一个是父进程调用fork()函数后的返回值,该返回值是刚刚创建的子进程的ID;另一个是子进程中fork()函数的返回值0。fork()函数返回两次的前提是进程创建成功。如果进程创建失败,则返回-1。

【例9-2】创建进程。

通常使用fork()函数来创建进程。

设计步骤

1)在Vim中创建一个新工程文件,命名为“example9_2.c”。

2)在“example9_2.c”中创建的代码如下所示。

978-7-111-33316-6-Chapter09-20.jpg

978-7-111-33316-6-Chapter09-21.jpg

3)用GCC编译并运行的结果如图9-7所示。

978-7-111-33316-6-Chapter09-22.jpg

图9-7 用fork()函数创建进程的运行结果

2.vfork()函数(www.xing528.com)

vfork()函数的调用方法与fork()函数完全相同,也是用来创建一个新进程。

978-7-111-33316-6-Chapter09-23.jpg

●正确返回:在父进程中返回子进程的进程号,在子进程中返回0。

错误返回:-1。

vfork()函数与fork()函数的区别:

1)fork()要复制父进程的数据段;而vfork()则不需要完全复制父进程的数据段。在子进程没有调用exec()和exit()之前,子进程与父进程共享数据段。

2)fork()不对父子进程的执行次序进行任何限制;而在vfork()调用中,子进程先运行,父进程挂起,直到子进程调用了exec()或exit()之后,父子进程的执行次序才不再有限制。

子进程会继承父进程的许多属性,包括用户ID、组ID和当前工作目录等。子进程和父进程还有一些不同的属性,如下所示:

●子进程有自己唯一的ID。

●fork()的返回值不同,父进程返回子进程的ID,子进程的则为0。

●不同的父进程ID。

●子进程共享父进程打开的文件描述符。

●子进程不继承父进程设置的文件锁。

●子进程不继承父进程设置的警告。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈