关于 fork vfork 函数

fork与vfork的区别
本文探讨了fork()和vfork()系统调用的区别,包括进程创建后的标准输出行为、运行顺序的不同以及对地址空间的影响。重点讲解了vfork()如何在父进程空间中运行子进程,以及这带来的变量共享特性。

1.一个进程通过fork()创建一个子进程,父子进程都想标准输出写操作,如果父进程的标准输出已重定向(如  ./pid >test.txt),那么子进程写到该标准输出时,它将更新域父进程共享的该文件的偏移量。   ---- 不是很明白  详见《嵌入式linux系统开发技术详见》P355-356

2.fork()的父子进程运行顺序不定,而vfork()保证子进程先运行,在它调用exec()或者exit()后父进程才可能调度运行。

3.fork()将父进程的地址空间完全复制到子进程中, 而vfork()出来的子进程是在父进程的空间中运行,如果此时子进程修改了某个变量,也会影响到父进程。即进程在vfork()返回后,直接运行在父进程的栈空间,并使用父进程的内存和数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值