僵尸进程

博客介绍了僵尸进程的产生,即子进程结束但内存未完全释放就会变成僵尸进程。还进行了测试,运行程序显示子进程pid为16487、父进程id为16486,通过ps -aux查看进程状态,子进程处于僵尸状态,父进程处于可中断等待状态。

 子进程结束但是,内存没有完全释放就会编程僵尸进程;

#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>



int main(int argc, char * argv[])
{
    pid_t pid;
    pid = fork();;
    if(pid  < 0)
    {
        perror("fork error!");
    }
    else if(pid == 0)
    {//  child  
        printf("pid : %d, ppid : %d\n", getpid(), getppid());
        //子进程结束将成为僵尸进程
        exit(0);


    }
    while(1)
    {
        sleep(1);
    }
    exit(0);



    exit(1);   
}




测试:

运行程序,可以看到子进程的pid是16487,父进程的id是16486;

andrew@andrew-Thurley:~/work/apue.2e$ ./a.out
pid : 16487, ppid : 16486

打开另一端口使用ps -aux查看进程状态:

andrew@andrew-Thurley:~$ ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
andrew   16486  0.0  0.0   4220   640 pts/21   S+   11:27   0:00 ./a.out
andrew   16487  0.0  0.0      0     0 pts/21   Z+   11:27   0:00 [a.out] <defunc

可以看到子进程16487的进程状态是  Z+ 也就是处于僵尸状态  <defunc 也说明处于僵尸状态

父进程的进程状态是  S+ 数处于可中断等待状态,若是D就是不可中断等待状态,可中断就是可以接受结束信号结束进程,如在命令行中使用  Ctrl + C

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andrewbytecoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值