我就想知道到底有几个进程在运行

PS 本文用于回答我的朋友的问题,请不要举报我

到底有几个进程在运行

到底有几个进程在运行

1、几个进程在运行?每个进程的第一行语句从哪里运行?到哪里结束?每个进程复制时的数据是多少?以及各个进程间的父子关系?

A、父进程的代码从第1行运行到16行结束,每次运行时$count++【$count++为右值运算】,运行到16行后结果为3。

B、父进程在运行到6行时,发起一个系统调用,等待系统fork一个新的进程【我起个名字叫child1子进程】,第一次运行时$count=1,$i=0,fork之后子进程的代码和父进程完全一样,没有什么变化(实在不理解,可以想想复制粘贴或是想想github的forking工作流,你fork人家的项目的时候,得到的数据就是人家目前最新的数据,如果说你过几天再fork数据就变了【假设仓库的所有者更新了源码】)

父进程第一次fork时:
此时$count=1,$i=0,fork之后产生了第一个子进程。我起名为child_1,此时该子进程的代码和父进程完全一样。

然后:
我们继续看父进程,$pid在父进程中它的值大于0,执行$coun++【右值运算】,然后运行到第14行,第一次for循环结束,此时$i=1,$count=2;

父进程第二次fork时:
同理执行fork系统调用,产生第二个子进程,我起名为child_2,此时该子进程的数据为$i=1,$count=2;
然后:
继续看父进程,执行到14行时循环结束,$i=2,$count=3;

此时父进程for循环完全结束,回到了第15行打印结果$count=3;

child_1子进程的运行工作过程
该子进程占用的是独立的存储空间,复制父进程的数据时$i=0,$count=1,它会从第7行开始运行,自然在本进程中,$pid=0,为什么?因为该进程目前是先从第7行开始运行的,它不是从第7行前面运行的,$pid自然就为0了,表示是自己,然后运行第10行的else分支,求得$count=10,然后运行到14行,此时第一次for循环结束,$i=1,$count=10;

然后:
child_1进程运行第6行执行fork系统调用,此时我起名为child_3进程,它复制的数据此时为$i=1,$count=10;

child_1 进程继续运行,自然满足$pid>0的条件,此时$count=10+1;然后跑到第14行,$i=2,整个循环结束,最终运行15行得到$count=11;

child_2子进程的运行工作过程
此时复制的数据是$i=1,$count=2;,同样的从7行开始运行可是只满足else分支执行$count=2*10;然后运行14行,整个循环结束了$i=2,$count=20;

child_3进程的运行工作过程
此时复制的数据为$i=1,$count=10;它的爸爸是child_1进程,同样的从第7行开始运行嘛,自然满足else分支$count=100了,此时循环结束$i=2;

总结:
父进程分别fork了child_1进程,child_2进程,child_1进程 fork了 child_3进程
进程间关系树如下
父进程
—-child_1
——–child_3
—-child_2

加上break之后呢???

到底有几个进程在运行

  • 父进程第一次fork
    $i=0;$count=1;此时产生一个子进程,我也起名为child_1【当然了系统会用进程描述符来标识】
    此时执行第7行满足$count=2;然后运行到14行,第一次循环结束,此时$i=1;

  • 父进程第二次fork
    $i=1;$count=2;此时也执行fork系统调用,产生了一个child_2子进程,同样的也只满足第7行的代码,执行$count=3,然后运行14行,整个循环结束$i=2;

  • child_1子进程的运行
    复制得来的数据为$i=0;$count=1,此时也从7行开始运行,但是也只满足else分支算得$count=10;然后遇到break整个循环结束。

  • child_2子进程的运行
    复制得来的数据为$i=1,$count=2,同样的从第7行开始运行,也只满足else分支运行求得$count=20;遇到break结束整个循环。

进程之间的关系
主进程
—- child_1
—- child_2

进程的启动和结束

linux【先调用exec系列函数调用】开始运行,进程遇到return,exit或最后一条语句或是外部的中断信号即终止。

本作品采用《CC 协议》,转载必须注明作者和本文链接

只会php crud的渣渣

勺颠颠
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 11
勺颠颠

@zxdstyle 你不知道有人总是举报我

5天前 评论
zxdstyle 4天前
小李世界

干嘛举报你?排版有问题?

5天前 评论
勺颠颠

@小李世界 可能是嫉妒我帅吧 :relaxed:

5天前 评论
Code_Er

楼主你好骚噢

4天前 评论

举报的人意思可能是应该发到生活版块?而不是博客?

4天前 评论
勺颠颠

@pigzzz 写啥都要被举报

file

4天前 评论
pigzzz 4天前
勺颠颠 (作者) (楼主) 4天前
勺颠颠

@zxdstyle 不管你写啥都要举报的

4天前 评论

可能你被针对了 :joy:

4天前 评论
勺颠颠

@xingkong12138 没办法,我不是人民币大家都能喜欢,是吧

4天前 评论
笑逐颜凯

举报这么好玩的啊 我也要试试

3天前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!