当前位置: 首页 > 编程日记 > 正文

僵尸进程和孤儿进程

一 . 僵尸进程: 子进程退出,父进程没有回收子进程资源(PCB),则子进程变成僵尸进程

处理僵尸进程的方法:wait 和 waitpid

调用wait和waitpid不仅可以获得子进程的终止信息,还可以使父进程阻塞等待子进程终止,起到进程间同步的作用。

1. waitpid的原型:

  #include <sys/types.h> #include <sys/wait.h>pid_t waitpid(pid_t pid,int *status,int options)

第一个参数pid  :

参数值说明
pid<-1等待进程组号为pid绝对值的任何子进程。
pid=-1等待任何子进程,此时的waitpid()函数就退化成了普通的wait()函数。
pid=0等待进程组号与目前进程相同的任何子进程,也就是说任何和调用waitpid()函数的进程在同一个进程组的进程。对已经加入了别的进程组子进程不理睬
pid>0等待进程号为pid的子进程。

第二个参数 int* status:获取子进程的退出状态,不关心可以置为NULL

说明
WIFEXITED(status)如果子进程正常结束,它就返回真;否则返回假。
WEXITSTATUS(status)如果WIFEXITED(status)为真,则可以用该宏取得子进程exit()返回的结束代码。
WIFSIGNALED(status)如果子进程因为一个未捕获的信号而终止,它就返回真;否则返回假。
WTERMSIG(status)如果WIFSIGNALED(status)为真,则可以用该宏获得导致子进程终止的信号代码。
WIFSTOPPED(status)如果当前子进程被暂停了,则返回真;否则返回假。
WSTOPSIG(status)如果WIFSTOPPED(status)为真,则可以使用该宏获得导致子进程暂停的信号代码。

例如:

        if(WIFEXITED(status)){ /* 如果WIFEXITED返回非零值 */printf("the child process %d exit normally./n",pr);printf("the return code is %d./n",WEXITSTATUS(status));
        }

第三个参数:int opotion

参数说明
WNOHANG设为非阻塞
WUNTRACED如果子进程进入暂停状态,则马上返回。

返回值:

如果waitpid()函数执行成功,则返回子进程的进程号;

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

如果有错误发生,则返回-1,并且将失败的原因存放在errno变量中。

失败的原因主要有:没有子进程或此进程存在,但不是调用进程的子进程(errno设置为ECHILD),调用被某个信号中断(errno设置为EINTR)或选项参数无效(errno设置为EINVAL)

2. wait:阻塞函数  ,相当于waitpid(-1, status, 0)

原型:

    #include <sys/types.h> #include <sys/wait.h>pid_t wait(int *status)

返回值:

如果成功,wait会返回被收集的子进程的进程ID。

如果调用进程没有子进程,调用就会失败,此时wait返回-1,同时errno被置为ECHILD。

我们知道一个进程的退出状态可以在Shell中用特殊变 量$?查看,因为Shell是它的父进程,当它终止时Shell调用wait或waitpid得到它的退出状态同时彻底清除掉这个进程。 

二 . 孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为1号 进程init进程,称为init进程领养孤儿进程

处理孤儿进程:kill(pid_t,signal_no);

1.通过kill查看父进程是否终止

2.杀死一个进程组

组长的终止不会终止进程组。进程组的终止直到进程组的最后一个进程终止或转移走。

转载于:https://www.cnblogs.com/Lune-Qiu/p/9273947.html

相关文章:

Castle ActiveRecord(一)概述

一、ActiveRecord与Castle ActiveRecordActiveRecord是《Patterns of Enterprise Application Architecture》中描述的著名模式。基本上&#xff0c;当实例每一行的时候&#xff0c;所有的静态方法会作用于全部纪录。 Castle ActiveRecord 是ActiveRecord 模式的一个实现&am…

一步步学习SPD2010--第十一章节--处理母版页(8)--从母版页创建网页

一步步学习SPD2010--第十一章节--处理母版页&#xff08;8&#xff09;--从母版页创建网页 在SPD中&#xff0c;你可以使用许多不同的方法创建ASP.NET页面。然而&#xff0c;因为页面将是SP网站的一部分&#xff0c;你很可能想像其他页面一样&#xff0c;保持相同的导航元素和外…

Confluence 6 查看空间活动

空间活动信息是默认禁用&#xff08;disabled by default&#xff09;的。活动&#xff08;Activity&#xff09;的标没有显示&#xff0c;如果你的 Confluence Usage Stats 插件没有启用的。请查看下面的说明&#xff1a; 如果启用的话&#xff0c;空间活动界面显示了每一个空…

flash模拟EEROM

FLASH中&#xff1a;0x08000000--0x08000000SIZE保存的是用户代码 Rule&#xff1a; 16位为传输单位 读数据&#xff1a; u16 STMFLASH_ReadHalfWord(u32 faddr) 可以在通用地址空间直接寻址&#xff1a;data*(vu16*)ADDR;[ADDR为32位数据&#xff0c;指向的数据为uv16型]写数据…

OSChina 周六乱弹 —— 就少个接吻的女友了

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2018&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 andonny &#xff1a;分享Mamas & The Papas的单曲《California Dreaming》 《California Dreaming》- Mamas & The …

存儲過程解密SQL

存儲過程解密SQLif exists (select * from dbo.sysobjects where id object_id(N[dbo].[sp_decrypt]) and OBJECTPROPERTY(id, NIsProcedure) 1)drop procedure [dbo].[sp_decrypt]GO /*--破解函數,視圖,程儲過程,触發器,限于SQLSERVER2000 --作者:J9988--*//*--使用示例 --解…

软件缺陷生命周期图示及当中涉及到的缺陷的状态

缺陷状态&#xff1a; 激活/打开 已修正 已关闭/非激活 重新打开(对应图示验证通过否N) 推迟(对应图示的延期) 保留(对应图示无法解决) 不能重现 需要更多信息

Adding a QR Code Reader in Flex on Android

<?xml version"1.0" encoding"utf-8"?> <s:View xmlns:fx"http://ns.adobe.com/mxml/2009" xmlns:mx"library://ns.adobe.com/flex/mx"xmlns:s"library://ns.adobe.com/flex/spark" title"HomeView"&g…

41-高级路由:BGP AS长度:接收一切、最大AS长度、不比较AS长度

一、实验拓扑&#xff1a;二、实验要求&#xff1a;1、R4配置同上个实验&#xff1b;2、R3配置接收的路由包含最大AS长度为4&#xff1b;3、R3配置隐藏命令&#xff0c;不比较AS长度&#xff1b;4、R5配置不管收到的路由有没有包含本地AS都收入&#xff08;之前R4已经配置了4.4…

利用动态加载模板,配合ajax实现无刷新操作

关键字&#xff1a;DataGrid 动态模板 Ajax我们使用ajax实现无刷新界面时&#xff0c;对于DataGrid&#xff0c;Repeater等列表还是比较麻烦的&#xff0c;经过我的尝试&#xff0c;找出一种比较合理的方法&#xff0c;可以免除对html的加工处理&#xff0c;随时获取到数据列表…

如何利用业余时间提升自己

1、要找到心动的目标 先要找到自己如果提升哪一方面的能力&#xff0c;能够对自己的工作有较大的贡献 找到你想成为的人 你从他身上找到你想拥有的技能 你喜欢某个人的身上的某种行为表现 也是你的榜样 或者从你的爱好着手发现你在爱好中能够得到提升的点 我想发展的工作技能是…

Eclipse插件的安装方法

转自&#xff1a;http://blog.csdn.net/zhangyabinsky/article/details/7043435 Eclipse插件的安装有两种方法 &#xff1a;一个是在线安装&#xff0c;另一个就是手动安装。 在线安装比较简单&#xff1a;点击Help>>Install New Software..如图&#xff1a; 这样会跳出一…

(转)uml 静态视图依赖

依赖 依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形&#xff0c;提供者的某些变化会要求或指示依赖关系中客户的变化。 根据这个定义&#xff0c;关联和泛化都是依赖关系&#xff0c;但是它…

白盒测试各种“覆盖”间的拓扑关系及白盒用例常用要求

SC为语句覆盖 DC为分支覆盖/判定覆盖 CC为条件覆盖 CDC为判定-条件覆盖 MCC为条件组合覆盖 MC/DC修正条件/判定覆盖 BPC为基本路径覆盖

[转]实战 SQL Server 2008 数据库误删除数据的恢复

实战 SQL Server 2008 数据库误删除数据的恢复 关键字&#xff1a;SQL Server 2008, recover deleted records 今天有个朋友很着急地打电话给我&#xff0c;他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录&#xff0c;而这个数据库之前没有任何备份。让我帮…

水面加上了Perlin Noise

通过用躁点扰动法线图&#xff0c;水面显得更有质感Real time Shadow 转载于:https://www.cnblogs.com/badkeeper/articles/495443.html

事件冒泡和阻止事件冒泡

事件冒泡 当事件发生后&#xff0c;这个事件就要开始传播(从里到外或者从外向里)。为什么要传播呢&#xff1f;因为事件源本身&#xff08;可能&#xff09;并没有处理事件的能力&#xff0c;即处理事件的函数&#xff08;方法&#xff09;并未绑定在该事件源上。例如我们点击一…

不使用powerdesigner手工绘制用例图例题详解

文章目录1.题目2.分析过程3.结果4.需要注意的细节5.本题易错的地方1.题目 根据以下场景绘制用例图。 某公司预开发一个反馈系统作为其CRM&#xff08;客户关系管理&#xff09;的一部分。系统基本功能描述如下&#xff1a; &#xff08;1&#xff09;客户可通过B/S系统在该公司…

zoj 1204 Additive equations

ACCEPT acm作业http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId204因为老师是在集合那里要我们做这道题。所以我很是天真的就以为要用集合做&#xff0c;结果发现网上都是用数组简单明了地实现了&#xff0c;显得我的代码&#xff0c;特么地超级恶心&#xff01;…

c#中的静态类

如果一个类中的所有方法都是类方法&#xff0c;那么就用static来定义这些方法&#xff0c;如果这个类又要增加一些属性&#xff0c;以供这些方法使用&#xff0c;那么就要使用static来定义这些属性&#xff0c;如果又要给这些属性初始化&#xff0c;就要使用静态构造函数&#…

golang flag简单用法

版权声明&#xff1a;本文可能为博主原创文章&#xff0c;若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/80972643 package mainimport ("flag""strings""os""fmt" )var ARGS stringfunc main() {var uptime…

四种JOIN简单实例

前提 现在有班级表class和学生表stud 各有两条数据 共同的属性是classId class表 stud表 可以看到&#xff1a;班级表无1班&#xff0c;学生表3班无学生 1.INNER JOIN 在表中存在至少一个匹配时返回行。和JOIN相同 或者 2.LEFT JOIN 从左表&#xff08;table1&#xff09…

Linux运维人员-服务器组成硬件基础

第1章 1.1关于运维人员 1.1.1 运维的职责 数据不能丢 网站7*24小时运行 保证用户体验&#xff08;用户体验要好&#xff09; 1.1.2 运维原则 简单、易用、高效 简单、粗暴 1.2 服务器 1.2.1服务器尺寸 服务器厚度&#xff08;厚度&#xff09; 服务器尺寸单位为U 1U4.45cm 1…

K - 近邻算法

K - 近邻算法&#xff08;KNN&#xff09;&#xff0c;他的工作原理&#xff1a;存在一个样本数据集合&#xff0c;也称为训练样本集&#xff0c;并且样本集合中每个数据都存在标签&#xff0c;即我们知道样本集合中每一个数据与所属分类的对于关系。输入没有标签的新数据后&am…

必须掌握的八个DOS命令 [转]

一&#xff0c;ping    它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说&#xff0c;ping命令是第一个必须掌握的DOS命令&#xff0c;它所利用的原理是这样的&#xff1a;网络上的机器都有唯一确定的IP地址&#xff0c;我们给目标…

SQL,NoSQL优缺点总结

SQL优点&#xff1a; 保持数据一致性&#xff08;最大优势&#xff09; 由于以标准化为前提&#xff0c;数据更新的开销很小 可以进行 Join 等复杂查询 SQL不足&#xff1a; 大量数据的写入处理 为有数据更新的表做索引或表结构&#xff08;schema&#xff09;变更 字段不固定…

iOS常用动画 类封装

//这是一个很好的动画封装类 很容易明白很详细 和大家分享 // CoreAnimationEffect.h // CoreAnimationEffect // // Created by VincentXue on 13-1-19. // Copyright (c) 2013年 VincentXue. All rights reserved. //#import /**! 导入QuartzCore.framework** Exampl…