Linux 进程控制编程

本文主要介绍了Linux中fork()函数。它是创建新进程的唯一方法,执行一次返回两个值。子进程是父进程的复制品,父子进程运行同一程序,可通过返回值区分。不过,使用fork()函数代价大,系统开销大且执行速度不快,还列出了其语法要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.fork()
在Linux 中创建一个新进程的惟一方法是使用fork()函数。fork()函数是Linux 中一个非常重要的函数,和
读者以往遇到的函数有一些区别,因为它看起来执行一次却返回两个值。难道一个函数真的能返回两个值
吗?希望读者能认真地学习这一部分的内容。
(1)fork()函数说明。
fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。使用fork()
函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、
代码段、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目
录、根目录、资源限制和控制终端等,而子进程所独有的只有它的进程号、资源使用和计时器等。
因为子进程几乎是父进程的完全复制,所以父子两个进程会运行同一个程序。因此需要用一种方式来区分
它们,并使它们照此运行,否则,这两个进程不可能做不同的事。
实际上是在父进程中执行 fork()函数时,父进程会复制出一个子进程,而且父子进程的代码从fork()函数的
返回开始分别在两个地址空间中同时运行。从而两个进程分别获得其所属fork()的返回值,其中在父进程
中的返回值是子进程的进程号,而在子进程中返回0。因此,可以通过返回值来判定该进程是父进程还是
子进程。
同时可以看出,使用fork()函数的代价是很大的,它复制了父进程中的代码段、数据段和堆栈段里的大部
分内容,使得fork()函数的系统开销比较大,而且执行速度也不是很快。
(2)fork()函数语法。
表 7.2 列出了fork()函数的语法要点。
所需头文件#include

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值