僵尸进程和孤儿进程
僵尸进程
父进程仍在运行,但其子进程已终止,且父进程未对子进程进行任何处理。
如果父进程持续不处理、不回收、也不获取子进程的退出状态信息,子进程将一直保持僵尸状态(Z)。这将导致系统资源无法释放,从而引起内存泄漏。
解决僵尸进程的常用方法之一是使用 waitpid() 函数,主动回收已终止的子进程并获取其退出状态。
需要注意的是,若整个进程退出,其占用的所有资源(包括未回收的僵尸子进程)会由操作系统统一回收,内存泄漏问题也随之消失。但对于长期运行的守护进程或服务进程,若发生子进程僵尸化,内存泄漏问题会更加显著且需及时处理。
查看僵尸进程:
孤儿进程
当父进程终止后,其子进程会被系统的 1 号进程(通常是 init 或 systemd)接管,这种被新进程领养的进程称为孤儿进程。
查看孤儿进程: