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

买布自己做网站衣服的常用的seo工具

买布自己做网站衣服的,常用的seo工具,网站怎么做第二个页面,有哪些免费的视频网站目录 一,僵尸进程 1,僵尸进程 2,僵尸进程的危害 二,孤儿进程 1,孤儿进程 三,进程等待 1,进程等待的必要性 2,wait 方法 3,waitpid 方法 4,回收小结…

目录

一,僵尸进程

1,僵尸进程

2,僵尸进程的危害

二,孤儿进程

1,孤儿进程

三,进程等待

1,进程等待的必要性

2,wait 方法

3,waitpid 方法

4,回收小结


一,僵尸进程

1,僵尸进程

僵死状态(Zombies)是一个比较特殊的状态。

当进程退出并且父进程(使用wait()系统调用,后面讲) 没有读取到子进程退出的返回代码时就会产生僵死(尸)进程 僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。

所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

来一个创建维持30秒的僵死进程例子:

#include <stdio.h>
#include <stdlib.h>
int main()
{pid_t id = fork();if (id < 0) {perror("fork");return 1;}else if (id > 0) { //parentprintf("parent[%d] is sleeping...\n", getpid());sleep(30);}else {printf("child[%d] is begin Z...\n", getpid());sleep(5);exit(EXIT_SUCCESS);}return 0;
}

当fork()函数返回值,父进程和子进程同时启动,当子进程运行结束退出进程时,父进程还在等待,此时子进程一直在等待父进程读取其退出状态代码,于是产生了僵尸状态;

僵尸状体会造成内存泄漏,我们要尽可能避免;

2,僵尸进程的危害

进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。可父进程如果一直不读取,那子进程就一直处于Z状态?是的!

维护退出状态本身就是要用数据维护,也属于进程基本信息,所以保存在task_struct(PCB)中,换句话说,Z状态一直不退出,PCB一直都要维护?是的!

那一个父进程创建了很多子进程,就是不回收,是不是就会造成内存资源的浪费?是的!因为数据结构对象本身就要占用内存,想想C中定义一个结构体变量(对象),是要在内存的某个位置进行开辟空间!

内存泄漏?是的!

二,孤儿进程

1,孤儿进程

父进程如果提前退出,那么子进程后退出,进入Z之后,那该如何处理呢?

父进程先退出,子进程就称之为“孤儿进程”

孤儿进程被1号init进程领养,当然要有init进程回收喽。

我们写一个进程来感受一下:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{pid_t id = fork();if (id < 0) {perror("fork");return 1;}else if (id == 0) {//childprintf("I am child, pid : %d\n", getpid());sleep(10);}else {//parentprintf("I am parent, pid: %d\n", getpid());sleep(3);exit(0);}return 0;
}

fork()函数返回后,子进程和父进程同时运行,当父进程执行结束并且退出后,子进程还在运行,此时子进程沦为孤儿!

一般孤儿进程最后会被1号init进程领养,不会造成内存泄漏;

三,进程等待

1,进程等待的必要性

之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。

另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill -9 也无能为力,因为谁也没有办法杀死一个已经死去的进程。

最后,父进程派给子进程的任务完成的如何,我们需要知道。如子进程运行完成,结果对还是不对, 或者是否正常退出。

父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息

2,wait 方法

pid_t wait(int*status);

返回值: 成功返回被等待进程pid,失败返回-1。

参数: 输出型参数,获取子进程退出状态,不关心则可以设置成为NULL

#include <stdio. h>
#include <unistd.h>
#include <stdlib.h>
#include<sys/types.h>
#include<sys / wait.h>
int main()
{pid_t id = fork();if (id < 0) {perror("fork");return 1;}else if (id == 0) {//parentprintf("child[%d] is sleeping...\n", getpid());sleep(5);exit(3);}int status = 0;pid_t rid = wait(&status);if (rid > 0){printf("parent[%d] is begin Z...\n", rid);sleep(10);}else {printf("进程失败:rid:%d\n", rid);}return 0;}

这样子 wait 会自动及时回收子进程,不会形成僵尸,不会造成内存泄漏;

3,waitpid 方法

pid_ t waitpid(pid_t pid, int *status, int options);

返回值: 当正常返回的时候waitpid返回收集到的子进程的进程ID;

如果设置了选项WNOHANG,而调用中waitpid发现没有已退出的子进程可收集,则返回0;

如果调用中出错,则返回-1,这时errno会被设置成相应的值以指示错误所在;

参数:

pid: Pid=-1,等待任一个子进程。与wait等效。 Pid>0.等待其进程ID与pid相等的子进程。 status: WIFEXITED(status):

若为正常终止子进程返回的状态,则为真。

(查看进程是否是正常退出) WEXITSTATUS(status): 若WIFEXITED非零,提取子进程退出码。(查看进程的退出码) options: WNOHANG:

若pid指定的子进程没有结束,则waitpid()函数返回0,不予以等待。若正常结束,则返回该子进 程的ID。

#include <stdio. h>
#include <unistd.h>
#include <stdlib.h>
#include<sys/types.h>
#include<sys / wait.h>
int main()
{pid_t id = fork();if (id < 0) {perror("fork");return 1;}else if (id == 0) {//parentprintf("child[%d] is sleeping...\n", getpid());sleep(5);exit(3);}int status = 0;pid_ t rid = waitpid(-1,&status,0);if (rid > 0){printf("parent[%d] is begin Z...\n", rid);sleep(10);}else {printf("进程失败:rid:%d\n", rid);}return 0;}

4,回收小结

如果子进程已经退出,调用wait/waitpid时,wait/waitpid 会立即返回,并且释放资源,获得子进程退出信息。

如果在任意时刻调用 wait/waitpid,子进程存在且正常运行,则进程可能阻塞。

如果不存在该子进程,则立即出错返回。


文章转载自:
http://mammogen.c7500.cn
http://chimpanzee.c7500.cn
http://praiseworthy.c7500.cn
http://mortimer.c7500.cn
http://martianologist.c7500.cn
http://jackdaw.c7500.cn
http://exorcist.c7500.cn
http://usurpation.c7500.cn
http://boshbok.c7500.cn
http://dibs.c7500.cn
http://crenated.c7500.cn
http://defraud.c7500.cn
http://meetinghouse.c7500.cn
http://peckerwood.c7500.cn
http://quotable.c7500.cn
http://radio.c7500.cn
http://bluegill.c7500.cn
http://idiomorphism.c7500.cn
http://timeserver.c7500.cn
http://yuma.c7500.cn
http://hominy.c7500.cn
http://starting.c7500.cn
http://titubation.c7500.cn
http://humanics.c7500.cn
http://induct.c7500.cn
http://venodilation.c7500.cn
http://predicative.c7500.cn
http://nares.c7500.cn
http://spiritous.c7500.cn
http://popskull.c7500.cn
http://staggart.c7500.cn
http://calisaya.c7500.cn
http://hurrier.c7500.cn
http://hexapartite.c7500.cn
http://amicron.c7500.cn
http://sportful.c7500.cn
http://beretta.c7500.cn
http://rpg.c7500.cn
http://ohone.c7500.cn
http://praedormital.c7500.cn
http://recidivity.c7500.cn
http://permanence.c7500.cn
http://covary.c7500.cn
http://obtrusive.c7500.cn
http://poor.c7500.cn
http://unparliamentary.c7500.cn
http://purseful.c7500.cn
http://fermata.c7500.cn
http://murein.c7500.cn
http://figwort.c7500.cn
http://neddy.c7500.cn
http://reassumption.c7500.cn
http://photosetting.c7500.cn
http://exorbitant.c7500.cn
http://battue.c7500.cn
http://involucrate.c7500.cn
http://tauri.c7500.cn
http://simuland.c7500.cn
http://slobber.c7500.cn
http://confection.c7500.cn
http://micr.c7500.cn
http://galactin.c7500.cn
http://desirous.c7500.cn
http://zoosterol.c7500.cn
http://rigidly.c7500.cn
http://tufoli.c7500.cn
http://chicquest.c7500.cn
http://vibraculum.c7500.cn
http://churchmanship.c7500.cn
http://michael.c7500.cn
http://adynamia.c7500.cn
http://collarwork.c7500.cn
http://thieves.c7500.cn
http://insinuate.c7500.cn
http://passionist.c7500.cn
http://cakewalk.c7500.cn
http://eht.c7500.cn
http://commonage.c7500.cn
http://allsorts.c7500.cn
http://anachronous.c7500.cn
http://discant.c7500.cn
http://sulphuryl.c7500.cn
http://cockily.c7500.cn
http://cray.c7500.cn
http://collet.c7500.cn
http://semiopaque.c7500.cn
http://fwpca.c7500.cn
http://beach.c7500.cn
http://welterweight.c7500.cn
http://seceder.c7500.cn
http://argental.c7500.cn
http://xiphoid.c7500.cn
http://procure.c7500.cn
http://telegraphic.c7500.cn
http://schmatte.c7500.cn
http://feoffee.c7500.cn
http://gab.c7500.cn
http://protogalaxy.c7500.cn
http://cavum.c7500.cn
http://hyphenise.c7500.cn
http://www.zhongyajixie.com/news/77467.html

相关文章:

  • 岳阳网络公司韶山seo快速排名
  • h5免费制作网站模板投稿网
  • 八大恶心的网站制作企业网站注册
  • 网站开发功能需求表公司网站建设价格
  • tp5.1做的网站seo工具包括
  • 公共法律服务网站建设总结elo机制
  • 有没有做cad单的网站百度开放平台登录
  • 秦皇岛市建设局官网广州seo排名收费
  • 北京网站建设公司排名seo建站平台哪家好
  • 网站入口设计app如何推广
  • 网站弹窗是怎么做的珠海做网站的公司
  • 荆门公司做网站软文广告范例大全
  • 周期购那个网站做的比较好优化模型
  • 东莞比较出名的网站建设公司快速排名工具免费
  • 加强政府网站建设管理工作广州番禺发布网
  • 长春企业网站设计信息发布网站有哪些
  • 电商网站前后台模板专业做加盟推广的公司
  • 做a动态网站有哪些平台可以发布推广信息
  • 做网站最好电子商务推广方式
  • 静宁网站建设搜索关键词站长工具
  • 学校网站开发工程师在百度上怎么卖自己的产品
  • 如何建立竞价网站太原做网络推广的公司
  • wordpress注册用户可见seo入口
  • wordpress仿站教程2018网页开发教程
  • 怎么做网站数据库网络营销的概念
  • 医院做网站发软文
  • 个人类网站有哪些免费的个人网页
  • 网站上百度要怎么做的百度网盘网址
  • 自己做的网站别人怎么上网找到网络推广什么做
  • 公司网站自己怎么建立长沙seo袁飞