fork(),vfork(),clone()的区别

本文详细介绍了Linux中创建进程的三种方式:fork、vfork和clone。fork创建完全独立的进程,采用写时复制技术减少开销;vfork创建的子进程与父进程共享地址空间,确保子进程先运行;clone则是更灵活的创建方式,可用于创建线程,能有选择地复制资源。调用后,父子进程的执行顺序与内核调度和特定标志有关。

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

一、fork()
1、fork()调用一次返回两次
返回值:成功(父进程:返回子进程的PID,子进程:返回0);
失败(父进程返回-1)
fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。例如,要是父进程打开了五个文件,那么子进程也有五个打开的文件,而且这些文件的当前读写指针也停在相同的地方。这样得到的子进程独立于父进程, 具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:pipe,共享内存等机制, 另外通过fork创建子进程,需要将上面描述的每种资源都复制一个副本。

fork返回后,子进程和父进程都从调用fork函数的下一条语句开始执行。
这里写图片描述
这里写图片描述
父子进程不共享一段地址空间,修改子进程,父进程的内容并不会受影响。
这里写图片描述
这里写图片描述

fork是一个开销十分大的系统调用,这些开销

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值