fork函数和vfork函数的区别

1、fork()函数说明
fork()函数若调用成功有两个返回值:子进程返回0,父进程返回进程标记,出错返回-1。fork()函数将运行的程序分为两个几乎一样的进程,每个进程都是从同一位置启动的线程。两个进程中的线程同时执行,就像两个用户同时启动。
注意:
当调用fork函数时,在该位置的进程一分为二,一个是父进程,一个是子进程。
若调用成功返回两个值,父进程返回子进程的标志,子进程的返回值是0,不成功返回-1.

之所以成功调用会返回两个值是因为复制时,复制了进程的堆栈段。所以两个进程会停留在fork函数中,等待返回。
每个进程都有不一样的进程标识符,可以通过getpid()函数获得,有一个记录父进程pid的变量,可以通过getppid()获得变量的值。
子进程是父进程的副本,他会获得父进程的数据空间、堆、栈、等资源的副本。注意,父子进程是不共享这些空间的。
2、vfork函数
用来创建子进程,但是和fork有区别:
vfork用于创建一个子进程,子进程和父进程共享地址空间,fork的子进程具有独立的地址空间。
vfork保证子进程先运行,在它调用exec或者exit之后,父进程才被调度运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值