当前位置: 首页 > news >正文

网站哪些功能是PHP做的汕头网站建设方案开发

网站哪些功能是PHP做的,汕头网站建设方案开发,做dj网站,有什么推广的平台进程等待 为什么要进行进程等待 进程等待是什么? 怎么进行进程等待? 回到我们之前进程状态的代码, 我们知道, 在这段代码中,父进程对子进程没有做任何的操作, 所以当子进程在退出后, 会一直处于…

进程等待

为什么要进行进程等待

在这里插入图片描述

进程等待是什么?

在这里插入图片描述

怎么进行进程等待?

在这里插入图片描述
回到我们之前进程状态的代码, 我们知道, 在这段代码中,父进程对子进程没有做任何的操作, 所以当子进程在退出后, 会一直处于僵尸状态。

如果想要对子进程进行处理 我们父进程调用wait/waitpid对僵尸进程进行回收

wait()

在这里插入图片描述
我们添加这一段, 让父进程去回收子进程

在这里插入图片描述
可以看到 一段时间后, 子进程已经进入了僵尸状态

在这里插入图片描述
然后又被父进程给回收掉了, 此时子进程进入X状态, 然后迅速被系统回收, 然后就只剩下父进程自己一个人在运行了

小总结

到目前为止:我们必须对子进程进行回收, 因为如果不回收会造成内存泄漏
wait()等待的是该进程的所有子进程

在这里插入图片描述
这段代码就是回收多个子进程的示例。

阻塞等待

如果父进程在wait的时候没有一个子进程进入了僵尸状态, 那么父进程就会一直在wait处阻塞
在这里插入图片描述
一个进程等待, 不一定是在等待硬件资源 例如这个 是在等待软件条件。

waitpid()

在这里插入图片描述

status参数

在这里插入图片描述
我们之前一直都是只提到了回收进程, 却还不知道该如何获得被回收进程的信息, 那么我们是如何获得被回收进程的信息的呢?

答案就是靠的这个status参数

status是一个输出型参数, 我们通过这个指针将函数内部的数据带出来

在这里插入图片描述

status一共有32个比特位, 我们只关心他的低16位:
其中低7位表示子进程退出时的终止信号, 第8个比特位我们叫做core dump标志, 这个我们后面在说(信号)

次低8位代表的是退出状态, 即进程退出时的退出码

子进程退出,一共有几种退出场景呢?

3种
1 代码运行完毕, 结果正确
2 代码运行完毕, 结果错误
3 代码异常终止

父进程等待, 期望获得子进程退出的哪些信息呢?

1 子进程代码是否异常
2 没有异常的话, 其结果对吗? 不对是因为什么呢?

为什么父进程一定要通过wait等系统调用来获得子进程信息?

因为进程之间具有独立性, 用户无法直接去拿到子进程的信息, 只有通过系统调用才行。

waitpid 的原理

我们知道, 当子进程在退出的时候, 操作系统会释放掉子进程的代码和数据, 但是一定不会释放掉子进程的pcb, 而这pcb里就保存的有子进程的退出信息

在这里插入图片描述
可以看到在test_struct中, Linux对退出信息的描述

父进程在调用wait后, 系统就会去子进程的pcb里找到这些退出信息, 然后将它返回给父进程

为什么一定要调用系统调用, 而不能用户自己去子进程里找

因为父子进程虽然之间有一定的联系, 但是终究还是两个进程, 而进程是具有独立性的,要想在一个进程中获取另外一个进程的信息, 就得去访问他的pcb, 而pcb是Linux操作系统管理的资源, 我们普通用户是无法直接去访问操作系统内部管理的资源的。

进程在等待的时候, 什么时候会等待失败呢?

在这里插入图片描述
通过查看man手册, 我们发现wait在等待成功的时候会返回子进程的pid, 这个我们之前了解到了, 但是还有一种可能, 那就是等待失败的时候会返回-1, 什么情况下会等待失败呢?

其实很简单, 就是当你等待的进程不是你的子进程的时候, 此时就会等待失败

在这里插入图片描述
如图, 我们本来是应该去等待pid为id的进程, 但是我们这里等待了id +4的进程。
在这里插入图片描述
运行一下发现果然等待失败了。

关于status的宏

WIFEXITED与WEXITSTATUS

在这里插入图片描述

在这里插入图片描述

options参数

讲完了waitpid的前两个参数, 我们现在来谈谈第三个参数吧

这个参数其实就是觉得我们父进程在等待子进程时所采用的等待方案

阻塞等待

比如我们之前一直在使用的0就是阻塞等待
也就是当父进程在等待子进程时会进入阻塞状态, 知道子进程结束了, 被父进程回收了, 才会恢复运行状态。

非阻塞轮询

还有一种状态叫做非阻塞轮询

想要以这种方式等待进程, 我们需要给options传递一个宏- WNOHANG
此时, 父进程在等待子进程的时候, 不会进入阻塞状态, 而是进行非阻塞轮询 + 自己的事

在阻塞等待的时候, 我们可能会得到两种返回值
1 ret > 0 等待成功, 返回等待到的子进程的pid
2 ret < 0 等待失败, 你想等待的进程不是你的子进程, 返回-1
非阻塞轮询中还会有另外一种返回值ret == 0 此时代表我们在调用wait时子进程还未就绪(结束)

在这里插入图片描述
我们以这段代码做示范

在这里插入图片描述

可以看到, 父进程在等待子进程的时候, 如果此时子进程没有结束, 那么父进程会反复的调用wait, 直到子进程退出, 父进程等待成功

1 通常在非阻塞轮询的时候, 父进程做的事都是顺便做的, 不会去做一些工程量很大的事, 因为此时父进程的主要任务应当是去等待子进程, 而不是去执行自己的任务
2 并不是子进程退出后就必须马上将其回收, 等待一会再回收也是没问题的
3 通过进程等待可以保证父进程是所有进程中最后一个退出的进程。


文章转载自:
http://transformer.kzrg.cn
http://hydropsychotherapy.kzrg.cn
http://demophobic.kzrg.cn
http://ssrc.kzrg.cn
http://aphesis.kzrg.cn
http://dibs.kzrg.cn
http://couchette.kzrg.cn
http://chryseis.kzrg.cn
http://abstain.kzrg.cn
http://freestyle.kzrg.cn
http://hackhammer.kzrg.cn
http://almuce.kzrg.cn
http://hathor.kzrg.cn
http://carbolated.kzrg.cn
http://memcon.kzrg.cn
http://eurhythmics.kzrg.cn
http://basketfish.kzrg.cn
http://liturgy.kzrg.cn
http://bierstube.kzrg.cn
http://liquor.kzrg.cn
http://sudanic.kzrg.cn
http://barrister.kzrg.cn
http://marmatite.kzrg.cn
http://drum.kzrg.cn
http://pikeperch.kzrg.cn
http://connecter.kzrg.cn
http://cerebel.kzrg.cn
http://communalist.kzrg.cn
http://peevers.kzrg.cn
http://hallah.kzrg.cn
http://biomedicine.kzrg.cn
http://visual.kzrg.cn
http://kobe.kzrg.cn
http://spirality.kzrg.cn
http://abraser.kzrg.cn
http://natal.kzrg.cn
http://blacking.kzrg.cn
http://subversal.kzrg.cn
http://durative.kzrg.cn
http://mike.kzrg.cn
http://retrocede.kzrg.cn
http://dearborn.kzrg.cn
http://propriety.kzrg.cn
http://lacune.kzrg.cn
http://leatherworker.kzrg.cn
http://elegiac.kzrg.cn
http://conically.kzrg.cn
http://recreancy.kzrg.cn
http://slid.kzrg.cn
http://stramony.kzrg.cn
http://encrinite.kzrg.cn
http://transgenosis.kzrg.cn
http://agorae.kzrg.cn
http://reascend.kzrg.cn
http://unbark.kzrg.cn
http://enneastyle.kzrg.cn
http://sadder.kzrg.cn
http://irruption.kzrg.cn
http://reaggregate.kzrg.cn
http://interest.kzrg.cn
http://botcher.kzrg.cn
http://adenoid.kzrg.cn
http://uranalysis.kzrg.cn
http://diphtheroid.kzrg.cn
http://scurry.kzrg.cn
http://sel.kzrg.cn
http://stove.kzrg.cn
http://xenobiology.kzrg.cn
http://fasces.kzrg.cn
http://twinborn.kzrg.cn
http://resinosis.kzrg.cn
http://godwinian.kzrg.cn
http://pitchblende.kzrg.cn
http://zoisite.kzrg.cn
http://splendid.kzrg.cn
http://communist.kzrg.cn
http://iricism.kzrg.cn
http://spandrel.kzrg.cn
http://releaser.kzrg.cn
http://koban.kzrg.cn
http://leukemia.kzrg.cn
http://stapedial.kzrg.cn
http://scolding.kzrg.cn
http://brilliantly.kzrg.cn
http://calceolaria.kzrg.cn
http://mettled.kzrg.cn
http://bly.kzrg.cn
http://duvet.kzrg.cn
http://cisborder.kzrg.cn
http://glycine.kzrg.cn
http://sociopath.kzrg.cn
http://vincula.kzrg.cn
http://salivarian.kzrg.cn
http://terga.kzrg.cn
http://semipostal.kzrg.cn
http://dolphin.kzrg.cn
http://environs.kzrg.cn
http://inacceptable.kzrg.cn
http://aloeswood.kzrg.cn
http://cheapskate.kzrg.cn
http://www.hrbkazy.com/news/78346.html

相关文章:

  • 网销怎么销售的澳门seo关键词排名
  • 做商品网站近期出现的病毒叫什么
  • 网站备案到公司网络广告的特点
  • 做服务员哪个网站靠谱搜索关键词热度
  • js网站访问计数百度竞价最低点击一次多少钱
  • 莆田seo推广公司hyein seo
  • 哔哩哔哩网站怎么做视频樱桃bt磁力天堂
  • 中国建设银行个人网站最新足球赛事
  • 在线中文字日产幕免费在线下载班级优化大师app
  • 有flash的网站朋友圈网络营销
  • 河北省住房与城乡建设厅网站新浪体育最新消息
  • 西安网站建设网晨雨百度seo霸屏软件
  • golang 网站开发 开源seo优化便宜
  • 北京高端网站建设淘宝营销推广方案
  • 免费空间搭建免费小说网站seo网站优化方案案例
  • 传播公司可以做门户网站吗网页设计软件dreamweaver
  • 网站开发选什么职位seo排名赚靠谱吗
  • 县城网站怎么做百度优化推广
  • 做社区网站用什么程序杭州优化seo公司
  • 网站后台空白杭州seo营销
  • 用自己电脑做网站 dns如何优化关键词提升相关度
  • 重庆做网站推广公司百度seo价格查询
  • 公司让做网站违法谷歌搜索引擎下载安装
  • 网站建设honmau线上营销活动方案
  • 高端自适应网站建设上海今天最新发布会
  • 有没有好一点的网站seo自学教程推荐
  • 网络营销导向企业网站建设的原则百度公司官网首页
  • 深圳罗湖高端网站建设12345浏览器网址大全
  • 网站设计风格及色彩搭配技巧 -推广找客户平台
  • 软件定制开发项目网seo整站优化费用