fork和vfork区别

本文探讨了fork和vfork两种创建子进程的方法。fork创建的子进程拷贝父进程的整个地址空间,而vfork则不拷贝,直至调用exec函数。vfork创建的轻量级进程可能导致父进程阻塞,且子进程中调用return可能导致不可预期后果,需使用exit退出。
摘要由CSDN通过智能技术生成

        fork和vfork都是创建一个子进程,但是是有区别的,主要区别有两点:

(1)fork创建的子进程拷贝父进程的进程空间,包括代码段、数据段(data,bss),堆栈段;而vfork创建的子进程不会拷贝父进程的进程地址空间,直到子进程调用exec族函数才进行进程空间拷贝。

(2)fork创建子进程后,子进程和父进程同时运行下文的代码,而vfork创建的子进程会阻塞父进程,子进程继续运行

直到调用exit(),_exit()和exec族函数,父进程从能继续运行。

        为什么要使用vfork?,vfork可以在创建子进程时,将资源占用降到最低,vfork创建的进程是轻量级的进程,相当于线程。vfork如果执行修改变量的代码,父进程中的变量也会相应改变,因此父进程会阻塞,直到子进程退出或者开启新的程序执行空间(调用exec族函数),避免对内存边界区的访问冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值