1、孤儿进程
孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,称为init进程领养孤儿进程。
2、僵尸进程
僵尸进程: 进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。
3、特别注意
僵尸进程是不能使用kill命令清除掉的。因为kill命令只是用来终止进程的,而僵尸进程已经终止。
4、产生孤儿进程的例子
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
pid_t pid;
pid = fork();
if(pid < 0)
{
perror("fork error");
exit(1);
}else if(pid > 0)
{
sleep(1);
printf("I'm parent pid =%d, ppid =%d\n", getpid(), getppid());
}else if(pid == 0)
{
printf("I'm child pid =%d, ppid =%d\n", getpid(), getppid());
sleep(3);
printf("I'm child pid =%d, ppid =%d\n", getpid(), getppid());
}
return 0;
}