我试图编写一个基本的多处理tcp服务器,它为每个新的accept()派生一个进程.
我不需要父进程来等待子进程.我遇到了两个解决方案-分叉两次和守护进程.
>两者有什么区别?
>在这种情况下哪个更合适?
>在这些因素中选择一个要牢记哪些因素?
解决方法:
有细微的差别.
分叉两次:如果子进程已经退出并已由父进程等待,则子进程不会成为僵尸.由于其父级(中间子进程)的退出,孙子也不能成为僵尸,因此孙子是孤儿.孤儿(孙代)被init继承,如果现在退出,则系统有责任对其进行清理.以这种方式,父进程被释放了等待收集来自孩子的退出状态信号的责任,并且父进程也可能忙于其他工作.这也使孩子可以长时间跑步,因此短暂的父母无需等待那么多时间.
守护程序:这是用于希望将自己与控制终端分离并作为系统守护程序在后台运行的程序.没有控制终端.
方法的决定取决于手头的需求/场景.