当前位置: 技术问答>linux和unix
fork复制进程问题
来源: 互联网 发布时间:2016-06-23
本文导语: fork会复制父进程malloc的内存吗? fork会复制父进程全局数组吗? vfork呢? | http://blog.csdn.net/tq02h2a/archive/2008/09/27/2989927.aspx http://ylxiong.wordpress.com.cn/linux-tips/fork.html 在fork之后,子进程和父进程都会继续...
fork会复制父进程malloc的内存吗?
fork会复制父进程全局数组吗?
vfork呢?
fork会复制父进程全局数组吗?
vfork呢?
|
http://blog.csdn.net/tq02h2a/archive/2008/09/27/2989927.aspx
一个简单的fork问题(那个高手来帮忙呀)
iis7站长之家
在fork之后,子进程和父进程都会继续执行fork调用之后的指令。子进程是父进程的副本。它将获得父进程的数据空间,堆和栈的副本,这些都是副本,父子进程并不共享这部分的内存。也就是说,子进程对父进程中的同名变量进行修改并不会影响其在父进程中的值。但是父子进程又共享一些东西,简单说来就是程序的正文段。正文段存放着由cpu执行的机器指令,通常是read-only的。
vfork最早起源于2.9BSD,它与fork的不同就在于它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec.vfork出来的子进程是在父进程的空间中运行的,它的存在就是为了exec调用.
vfork与fork的另一区别是:vfork保证子进程先运行,在它调用exec或exit后父进程才可能调度运行。而fork的父子进程运行顺序是不定的,它取决于内核的调度算法。
http://linux.chinaitlab.com/administer/714707.html
在fork之后,子进程和父进程都会继续执行fork调用之后的指令。子进程是父进程的副本。它将获得父进程的数据空间,堆和栈的副本,这些都是副本,父子进程并不共享这部分的内存。也就是说,子进程对父进程中的同名变量进行修改并不会影响其在父进程中的值。但是父子进程又共享一些东西,简单说来就是程序的正文段。正文段存放着由cpu执行的机器指令,通常是read-only的。
vfork最早起源于2.9BSD,它与fork的不同就在于它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec.vfork出来的子进程是在父进程的空间中运行的,它的存在就是为了exec调用.
vfork与fork的另一区别是:vfork保证子进程先运行,在它调用exec或exit后父进程才可能调度运行。而fork的父子进程运行顺序是不定的,它取决于内核的调度算法。
http://linux.chinaitlab.com/administer/714707.html
|
fork会,但拷贝的时机可能基于COW技术。
至于vfork,它本来就不是为了使用父进程的数据而存在的。可以简单地认为不会拷贝吧。
至于vfork,它本来就不是为了使用父进程的数据而存在的。可以简单地认为不会拷贝吧。
|
全局数组和malloc的内存子进程会复制父进程的,这是肯定的,至少平时我都是这么用的。
fork产生的子进程,我都是用共享内存的方法来共享数据。如果想避免这个方法,可以用pthread。
至于vfork,不了解。
fork产生的子进程,我都是用共享内存的方法来共享数据。如果想避免这个方法,可以用pthread。
至于vfork,不了解。