僵尸进程(Zombie Process)是指已经终止但尚未被其父进程清理的子进程。它们仍然保留在进程表中,占用系统资源,如进程号,可能导致系统资源耗尽,影响系统性能。
僵尸进程的危害
- 资源占用:僵尸进程占用进程号,可能导致系统无法创建新进程。
- 内存泄漏:僵尸进程保留进程信息,导致内存资源浪费。
僵尸进程的产生原因
- 子进程先于父进程退出。
- 父进程没有调用
wait()
或waitpid()
回收子进程资源。
如何处理僵尸进程
- 父进程回收:父进程通过
wait()
或waitpid()
等待子进程结束,回收资源。 - 忽略 SIGCHLD 信号:父进程设置
signal(SIGCHLD, SIG_IGN)
,让内核自动回收子进程资源。
通过及时处理子进程的终止状态,可以避免僵尸进程的产生,确保系统资源的正常释放。