社区
Linux/Unix社区
帖子详情
fork复制进程问题
zxc345232435346
2009-08-07 11:22:01
fork会复制父进程malloc的内存吗?
fork会复制父进程全局数组吗?
vfork呢?
...全文
212
12
打赏
收藏
fork复制进程问题
fork会复制父进程malloc的内存吗? fork会复制父进程全局数组吗? vfork呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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,它本来就不是为了使用父进程的数据而存在的。可以简单地认为不会拷贝吧。
猫已经找不回了
2009-08-07
打赏
举报
回复
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
Linux中
fork
复制
进程
和写时拷贝技术(重点)以及
fork
相关练习
函数返回类型pid_t实质是int类型
fork
函数会新生成一个
进程
,调用
fork
函数的
进程
为父
进程
,新生成的
进程
为子
进程
。在父
进程
中返回子
进程
的PID,在子
进程
中返回0,失败返回-1
fork
是把已有的
进程
复制
一份,当然把PCB也
复制
了一份,然后申请一个PID,子
进程
的 PID(父
进程
的)+1;子
进程
的PID=父
进程
的PID+1;如果父子
进程
想要做不同的事情,那么我们通过返回值来判断;getppid:得到一个
进程
的父
进程
的PID;getpid:得到当前
进程
的PID;
【Linux进阶】
进程
之
fork
——
进程
复制
一个
进程
,包括代码、数据和分配给
进程
的资源。
fork
()函数通过系统调用创建一个与原来
进程
几乎完全相同的
进程
,也就是两个
进程
可以做完全相同的事,但如果初始参数或者传入的变量不同,两个
进程
也可以做不同的事。一个
进程
调用
fork
()函数后,系统先给新的
进程
分配资源,例如存储数据和代码的空间。然后把原来的
进程
的所有值都
复制
到新的新
进程
中,只有少数值与原来的
进程
的值不同。相当于克隆了一个自己。...
android
fork
子
进程
,
fork
子
进程
title:
fork
子
进程
data: 2019/3/21 20:24:39toc: true这里实在学习socket编程前的小知识点,用来创建多个服务端学习文档速记
fork
并不保证父子
进程
的执行顺序,会存在父
进程
先比子
进程
结束,这个时候子
进程
的就可能由系统
进程
1( PID为 1 的 init)接管子
进程
返回 0父
进程
返回子
进程
的
进程
号 (PID)粗浅的理解就是
fork
之后创建了一个一模一样的上下...
【Linux学习笔记】
进程
fork
子
进程
时,会
复制
父
进程
中的线程吗
要理解
fork
的原理,Copy On Write 的原理,重点是理解虚拟内存和物理内存的关系。
fork
之后,子
进程
会
复制
父
进程
的虚拟内存空间,也就是代码段、数据段、堆栈等,虚拟内存空间里表达的就是程序里各个变量的地址,所以子
进程
里各个变量的地址和父
进程
里各个变量的地址是一样的。父子
进程
只读时,不会发生真实的物理内存拷贝,他们的页映射表内容一致,即同样的虚拟内存地址指向同样的物理内存地址;
44-
fork
()
复制
进程
一:知识点 1.
fork
()
复制
进程
(但是不是
复制
代码) 2.
进程
:
进程
就是一个正在执行的程序 3.程序和
进程
不同 程序:像是菜谱 main.exe/main
进程
:照着菜谱在厨房做菜的过程(正在进行) ./main 4.PCB:
进程
控制块 P
进程
C控制B块 5.
复制
出来的子
进程
并不是从头开始运行的,而是从
fork
()后面的语句开始执行 6.两个程序同时执行,执行结果交替输出,父
进程
先打印子
进程
再打印和子
进程
先打印父
进程
再打印没有关系,都是正确的,多
进程
的运行结果可能是不确定的,但是都是正确的 7
Linux/Unix社区
23,128
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章