diff --git a/README.md b/README.md index 44ab2c4..529e9b9 100755 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ * [为什么有了进程还需要线程和协程?](./problems/为什么有了进程还需要线程和协程?.md) * [外中断和内中断有什么区别?](./problems/外中断和内中断有什么区别?.md) * [什么是僵尸进程?](./problems/什么是僵尸进程?.md) +* [什么是孤儿进程?](./problems/什么是孤儿进程?.md) * [程序编译的过程](./problems/程序编译的过程.md) * [并行和并发的区别](./problems/并行和并发的区别.md) * [什么是缺页中断](./problems/什么是缺页中断.md) diff --git "a/problems/\344\273\200\344\271\210\346\230\257\345\255\244\345\204\277\350\277\233\347\250\213\357\274\237.md" "b/problems/\344\273\200\344\271\210\346\230\257\345\255\244\345\204\277\350\277\233\347\250\213\357\274\237.md" new file mode 100644 index 0000000..1bc9096 --- /dev/null +++ "b/problems/\344\273\200\344\271\210\346\230\257\345\255\244\345\204\277\350\277\233\347\250\213\357\274\237.md" @@ -0,0 +1,8 @@ +孤儿进程(Orphan Process)是操作系统中与进程生命周期相关的另一种特殊状态,与僵尸进程形成对应但成因完全不同的概念。简单来说,**孤儿进程是指其父进程已经终止或退出,而自身仍在运行的进程**。 + +孤儿进程的产生逻辑: +1. 正常情况下,进程由父进程创建(如通过fork()系统调用),父进程会管理子进程的生命周期。 +2. 若父进程由于异常退出、被终止(如接收SIGKILL信号)或正常结束等原因先于子进程终止,此时子进程就会失去父进程的管理,成为孤儿进程。 +3. 操作系统为了避免孤儿进程无人管理,会将其 “收养”,由系统中的特殊进程(通常是init 进程,进程 ID 为 1,在现代系统中可能是systemd、launchd等)接管。 + +孤儿进程是操作系统进程管理中的一种正常现象,系统通过自动接管机制确保了其生命周期的合理收尾,通常无需开发者额外处理。