进程

来源:互联网 发布:cda数据分析培训 编辑:程序博客网 时间:2024/06/15 06:12

子进程与父进程共享哪些资源?
答:复制出来的子进程的task_struct结构与系统的堆栈空间是与父进程独立的,但其他资源却是与父进程共享的,比如文件指针,socket描述符等。不同的进程使用不同的地址空间,子进程被创建之后,父进程的全局变量、静态变量和 fork 处的静态变量会复制到子进程的地址空间中,自此以后,二者开始“各行其是”,互不干扰,所以,所有的“变量”都将各自独立
 例题:
当父进程调用fork()创建子进程之后,下列哪些变量在子进程中修改之后,父进程里也会相应地作出改动?
A.全局变量
B.局部变量
C.静态变量

D.文件指针


http://blog.csdn.net/hikaliv/article/details/4276758

for( i = 0; i < 5; i++ ) 
    if( fork() == 0 ) 
        continue; 

共生成多少个子进程?


如上图所示,这就是一个二项树,二项树结点的计算公式为 2^n - 1,当 n = 5 时,结果为 31。

但是二项树计算的节点的数目,所以用二项树不太明白

但是有人建议的计算方法很不错1+2+4+8+16 = 31

就主线程而言,当i=4时,只创建了一个字线程;

 i =3 ,共创建了2

i=2,1+2+1=4

i=1,1+2+4+1=8

i = 0,1+2+4+8+1 = 16



原创粉丝点击