父进程调用fork()生产子进程,子进程先于父进程退出,但是父进程没有调用wait()方法或者是waitpid()方法回收子进程的资源,子进程就变成了僵尸进程,这个进程号会一直被占用
如果大量的僵尸进程产生,则没有可用的进程号会导致系统无法产生新的进程
解决方法:父进程每隔一段时间查询子进程是否结束,如果结束就回收子进程资源
使用signal函数,当子进程结束,父进程就会收到该信号,父进程再调用wait()方法或者是waitpid()方法回收子进程的资源
孤儿进程:父进程先于子进程退出,子进程会被1号进程也就是init进程领养
当子进程退出的时候,1号进程(也就是init进程)会回收子进程的资源,防止子进程变成僵尸进程