在 Linux(以及类 Unix 系统)中,**孤儿进程(Orphan Process)**是指:
父进程已经结束(退出),但其子进程仍在运行,这些仍在运行的子进程就称为孤儿进程。
init / systemd)init(PID=1)或 systemdinit / systemd 会定期 wait() 这些子进程,回收资源#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 子进程
sleep(10);
printf("子进程还在运行,父进程已死\n");
} else {
// 父进程
printf("父进程退出\n");
}
return 0;
}
运行后:
systemd 接管| 类型 | 父进程状态 | 子进程状态 | 是否有危害 |
|---|---|---|---|
| 孤儿进程 | 已退出 | 仍在运行 | ❌ 一般无危害 |
| 僵尸进程 | 仍在运行 | 已退出 | ⚠ 不回收会占资源 |
init 回收)nohup 启动的进程ps -eo pid,ppid,stat,comm
PPID = 1 通常表示孤儿进程STAT = Z 表示僵尸进程如果你愿意,我也可以讲: