Linux(十)僵死进程及文件操作

一、僵死进程(僵尸进程)

(一)僵死进程产生的原因(条件)

其实,僵死进程的定义也就是它的产生原因(条件),让我们一起了解一下吧!

当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程。(这句话非常重要!!!)

我们来进一步了解一下:

1、退出码:(举个例子)exit(0)中的0就是退出码,表示正常退出。

2、用我们自己的话解释僵死进程就是:不是就绪、阻塞、运行(进程的三个基本状态)的进程就是僵死进程。

3、在有父、子进程的情况下,正常删除子进程的步骤:(1)先释放子进程的实体(2)将子进程的退出码赋值为0(3)父进程获取子进程的退出码(4)删除子进程的PCB(也就是进程控制块)

简而言之,就是子进程先结束,并且父进程没有获取它的退出码;

那么僵死进程产生的原因或者条件就是:子进程先于父进程结束,并且父进程没有获取子进程的退出码;

(二)僵死进程的产生过程

让我们通过图片更加清楚的了解产生过程吧

 

上面的图片从左到右、从上到下分别为初始、1、2、3步,产生僵死进程则就出现在第三步

(三)观察僵死进程

让我们通过代码一起来观察一下僵死进程,用到的代码我放在下面啦!

#include <stdio.h>
#include <unistd.h>
#include <assert.h>
#include <stdlib.h>
 
int main(){
    char *s=NULL;
    int n=0;//控制父子进程执行的次数;
 
    pid_t id=fork();
    assert(id !=- 1);
 
    if(id == 0){
        s="chi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值