码迷,mamicode.com
首页 > 系统相关 > 详细

一、进程与信号之僵尸进程

时间:2016-08-31 23:56:11      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

孤儿进程:父进程被终结,子进程成为孤儿进程,被init进程接管

僵尸进程:子进程被终结,内存未被释放,形成僵尸进程

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    pid_t pid;
    pid=fork();
    
    if(pid<0)
    {
        printf("fork error");
        exit(1);
    }
    else if(pid ==0)
    {
        //终结子进程
        printf("pid: %d,ppid: %d",getpid(),getppid());
        exit(0); 
    }
    while(1)
    {
        sleep(1);
    }
    exit(0);
}

编译执行

ps -aux |grep fork_zombie

 2557  0.0  0.0   4224   644 pts/8    S    07:40   0:00 ./fork_zombie
 2558  0.0  0.0      0     0 pts/8    Z    07:40   0:00 [fork_zombie] <defunct>
 2560  0.0  0.0  21296   936 pts/8    S+   07:41   0:00 grep --color=auto fork_zombie

<defunct> 为僵尸进程

执行杀死父进程 后僵尸进程成为孤儿进程被init进程接管
kill -9 2557

避免僵尸进程方法:

  1.父进程通过调用wait(),waitpid() 来回收

  2,sigchld 信号处理

  3,编程孤儿进程右init回收

一、进程与信号之僵尸进程

标签:

原文地址:http://www.cnblogs.com/peixiguang/p/5827880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!