fork()&&进程的创建与终止--多进程编程

本文详细介绍了Linux中进程的创建和执行,主要通过fork()函数和exec函数族来实现。fork()利用写时复制技术创建子进程,减少资源开销,而进程的终止则涉及资源回收和僵死状态。子进程与父进程通过返回值区分,并使用pipe、共享内存等进行通信。
摘要由CSDN通过智能技术生成

(1)进程的创建和执行。 
许多操作系统都提供的是产生进程的机制,也就是首先在新的地址空间里创建进程、读入可执行文件,
最后再开始执行。Linux 中进程的创建很特别,它把上述步骤分解到两个单独的函数中取执行:fork()
和 exec 函数族。首先,fork()通过复制当前进程创建一个子进程,子进程与父进程的区别仅仅在于不
同的 PID、PPID 和某些资源及统计量。exec 函数族负责读取可执行文件并将其载入地址空间开始运行。 

要注意的是,Linux 中的 fork()使用的是写时复制(copy on write)的技术,也就是内核在创建进
程时,其资源并没有立即被复制过来,而是被推迟到需要写入数据的时候才发生。在此之前只是以只读的
方式共享父进程的资源。写时复制技术可以使 Linux 拥有快速执行的能力,因此这个优化是非常重要的。 
(2)进程的终止。 
进程终止也需要做很多烦琐的收尾工作,系统必须保证进程所占用的资源回收,并通知父进程。Linux
首先把终止的进程设置为僵死状态。这个时候,进程已经无法运行。它的存在只为父进程提供信息。父进
程在某个时间调用 wait 函数族,回收子进程的退出状态,随后子进程占用的所有资源被释放。 

1.fork() 

在 Linux 中创建一个新进程的唯一方法是使用 fork()函数。fork()函数是 Linux 中一个非常重要的函数,
和读者以往遇到的函数有一些区别,因为它看起来执行一次却返回两个值。一个函数真的能同时返回两个
值吗?希望读者能认真地学习下面的内容。 
(1)for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值