Linux 进程管理与进程间通信:从 fork 到共
Linux 进程管理,核心就三件事:怎么生、怎么死、怎么通信。
生与死:跑命令时,父进程先复制出子进程。子进程再换上新程序干活。内核看线程和进程其实差不多,区别只是资源共享得多。fork 看着像全复制,其实用了“写时复制”。谁先改数据才真复制,所以分叉很快。
排障看状态:R 是运行,S 是正常等资源。D 是卡在磁盘 IO,Z 是僵尸进程。僵尸就是干完活退出了,但爹没来收尸。想看谁生了谁,用 pstree;查线程暴涨看 /proc 目录。
通信选工具:
管道:适合父子进程传话。
共享内存:最快,适合大块数据。
本地 Socket:功能最全,复杂双向通信首选。
信号量:不传数据,专门负责排队和互斥。
守护进程:以前得自己双 fork、关文件描述符。现在更推荐直接写前台程序,交给 systemd 管。
一句话选型:亲缘进程用管道,大块数据用共享内存,复杂通信用本地 Socket。
原文Linux 进程管理与进程间通信:从 fork 到共享内存的实战笔记