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

珠海工程建设信息网站seo诊断站长

珠海工程建设信息网站,seo诊断站长,过年做啥网站能致富,广东省白云区属于哪个市目录 一#xff0c;僵尸进程 1#xff0c;僵尸进程 2#xff0c;僵尸进程的危害 二#xff0c;孤儿进程 1#xff0c;孤儿进程 三#xff0c;进程等待 1#xff0c;进程等待的必要性 2#xff0c;wait 方法 3#xff0c;waitpid 方法 4#xff0c;回收小结…目录 一僵尸进程 1僵尸进程 2僵尸进程的危害 二孤儿进程 1孤儿进程 三进程等待 1进程等待的必要性 2wait 方法 3waitpid 方法 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 也无能为力因为谁也没有办法杀死一个已经死去的进程。 最后父进程派给子进程的任务完成的如何我们需要知道。如子进程运行完成结果对还是不对 或者是否正常退出。 父进程通过进程等待的方式回收子进程资源获取子进程退出信息 2wait 方法 pid_t wait(int*status); 返回值 成功返回被等待进程pid失败返回-1。 参数 输出型参数获取子进程退出状态,不关心则可以设置成为NULL #include stdio. h #include unistd.h #include stdlib.h #includesys/types.h #includesys / 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 会自动及时回收子进程不会形成僵尸不会造成内存泄漏 3waitpid 方法 pid_ t waitpid(pid_t pid, int *status, int options); 返回值 当正常返回的时候waitpid返回收集到的子进程的进程ID 如果设置了选项WNOHANG,而调用中waitpid发现没有已退出的子进程可收集,则返回0 如果调用中出错,则返回-1,这时errno会被设置成相应的值以指示错误所在 参数 pid Pid-1,等待任一个子进程。与wait等效。 Pid0.等待其进程ID与pid相等的子进程。 status: WIFEXITED(status): 若为正常终止子进程返回的状态则为真。 查看进程是否是正常退出 WEXITSTATUS(status): 若WIFEXITED非零提取子进程退出码。查看进程的退出码 options: WNOHANG: 若pid指定的子进程没有结束则waitpid()函数返回0不予以等待。若正常结束则返回该子进 程的ID。 #include stdio. h #include unistd.h #include stdlib.h #includesys/types.h #includesys / 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://www.sczhlp.com/news/152845/

相关文章:

  • 深圳网站设计兴田德润官方网站哪家网站做旅游攻略好
  • 建站网站平台足球最新比赛消息
  • 网站备案域名证书好看动漫网替代网站
  • 企业建设网站费用求职网
  • 网站简易后台深圳各大网站制作哪家公司好
  • 怎么做模板网站企业网站制作是什么
  • 使用云主机做网站教程个人网页设计的主要内容和要求
  • 自己做微网站制作教程旅游电子商务 网站建设
  • 网站模块有哪些怎么开免费网站
  • wordpress搭建会员商丘整站优化
  • 张家港网站制作网络推广做营销网站 如何让商家入驻
  • 建筑工程公司需要什么资质石家庄seo管理
  • 设计公司网站建设费用新手做自己的网站
  • 国家高新技术企业查询网站wordpress 截取长度
  • 2025年真空机厂家推荐榜:平台式真空封口机,拉伸膜真空覆膜机,全自动拉伸膜真空包装机,滚动连续式真空包装机,双面拉伸真空包装机公司实力甄选指南
  • 安安互联怎么上传网站小程序商城开发
  • 莱芜网站建设价格动易网站无法安装
  • 网站模板中文乱码asp源码 自助建站
  • 网站建设网站制作哪个好最好的flash网站
  • 西安网站建设服务商十强塘沽网红书店
  • 刷网站软件开小加工厂去哪接单子
  • 网站建设有关表格个人公司注册流程及需要的材料
  • 闲鱼网站做交易是先付款吗网站建设需要的准备
  • 网站建设工期时间表wordpress调用全站最新文章
  • 做网赌网站得多少钱做外贸最适合的网站系统
  • 免费网站建设网站有那些科研网站怎么建设
  • 做网站app价格多少钱怎么用域名做网站
  • 建设服装网站的意义建立个人网页需要多少钱
  • 免费网站申请域名com无锡做网站专业的公司
  • 企业网站免费建设校园门户网站建设项目技术支持