fork复制进程问题

zxc345232435346 2009-08-07 11:22:01
fork会复制父进程malloc的内存吗?
fork会复制父进程全局数组吗?

vfork呢?
...全文
212 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fetag 的回复:]
引用 3 楼 steedhorse 的回复:
但拷贝的时机可能基于COW技术。

只有老大的这句是最经典的,其余人都是捕风捉影,照本宣科而已
[/Quote]顶
独孤过儿 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 steedhorse 的回复:]
但拷贝的时机可能基于COW技术。
[/Quote]
只有老大的这句是最经典的,其余人都是捕风捉影,照本宣科而已
hpyyang 2009-08-10
  • 打赏
  • 举报
回复
FORK是一次运行,2次返回,所有进程资源都会被复制一份。。
piedgogo 2009-08-10
  • 打赏
  • 举报
回复
简单说,就是把fork之前运行过的程序复制一遍,fork之后的,根据不同的pid,执行不同部分。
比如:
int
main()
{
int i=0;
if(fork())
exit(0);
printf("%d",i);
}
这段程序,i会被打印一遍,因为父进程会在pid=1时停止,释放i所占资源;而自进程里的i会被打印出来。
jluliuchao 2009-08-09
  • 打赏
  • 举报
回复
我还是喜欢用线程
cir2633 2009-08-09
  • 打赏
  • 举报
回复
都会
可以在子进程中用setsid()独立出来
tangzb 2009-08-09
  • 打赏
  • 举报
回复
全部都会
a263238386 2009-08-08
  • 打赏
  • 举报
回复
vfok(),不太了解,没用过。。
快乐田伯光 2009-08-07
  • 打赏
  • 举报
回复
都会
sherlock_lai 2009-08-07
  • 打赏
  • 举报
回复
全局数组和malloc的内存子进程会复制父进程的,这是肯定的,至少平时我都是这么用的。
fork产生的子进程,我都是用共享内存的方法来共享数据。如果想避免这个方法,可以用pthread。

至于vfork,不了解。
晨星 2009-08-07
  • 打赏
  • 举报
回复
fork会,但拷贝的时机可能基于COW技术。
至于vfork,它本来就不是为了使用父进程的数据而存在的。可以简单地认为不会拷贝吧。
  • 打赏
  • 举报
回复
http://blog.csdn.net/tq02h2a/archive/2008/09/27/2989927.aspx

http://ylxiong.wordpress.com.cn/linux-tips/fork.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

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧