background:
unix:
每个子进程退出,内核释放该进程所有资源,打开的文件,占用的内存
保留的信息:the process ID,the termination status of the process,the amount of CPU time taken by the process
父进程用wait()/waitpid()释放子进程的保留信息
父进程不调用wait()/waitpid()进程号一直被占用,系统所能提供的进程号有限,没有可用的进程号导致系统不能产生新的进程
Zombie 僵尸进程
一个进程fork()创建了子进程,子进程退出,父进程没有调用wait()/waitpid()释放子进程的保留信息,子进程的进程描述仍保存在系统中,进程号仍被占用
Orphan 孤儿进程
父进程退出,他的一个或多个子进程还在运行,子进程成为孤儿进程。孤儿进程将被init进程收养,init进程对他们完成状态收集,释放子进程的状态描述,主要是进程号