僵尸进程(Zombie process)是一种已经执行完毕但未被完全清除的进程
僵尸进程的出现通常发生在以下情况:
父进程在子进程执行完毕后没有调用wait()或waitpid()函数来收集子进程的退出状态信息。这样,子进程的退出信息(包括进程ID、退出状态等)会保留在系统进程表中,导致僵尸进程的产生。
子进程结束,但其父进程仍在运行。在这种情况下,子进程的退出信息会保留在系统进程表中,形成僵尸进程。
父进程在子进程执行过程中崩溃,导致子进程变成孤儿进程。孤儿进程会被init进程(PID为1)接管,init进程会周期性地调用wait()函数来回收孤儿进程的资源,因此孤儿进程不会变成僵尸进程。但如果父进程没有正确回收资源,孤儿进程可能会变成僵尸进程。
为了避免僵尸进程的产生,父进程应该正确处理子进程的退出状态信息,使用wait()或waitpid()函数来回收子进程的资源。