Ank*_*kur 6 unix fork
fork用于创建从中调用的进程的副本.通常会调用exec系列函数.除此之外还有叉子的用法吗?我能想到一个.用管道功能做IPC.
Tho*_*mas 7
当然是.启动进程,进行一些数据初始化然后生成多个worker是很常见的.它们的地址空间都有相同的数据,它是Copy On Write.
另一个常见的事情是让主进程为每个进入的连接侦听TCP套接字和fork().这样,可以在并行处理现有连接时立即处理新连接.
我认为你忘了在fork()之后,两个进程都可以访问fork()之前进程中存在的所有数据.
hlo*_*dal 6
fork的另一个用途是从父进程分离(回退到init,进程1).如果某个进程,比如使用pid 1111进行bash,则启动myserver获取pid 2222,它将有1111作为父进程.假设2222叉子和孩子获得pid 3333.如果现在进程2222退出,3333将松开其父节点,而是它将获得init作为其新父节点.
这种策略有时在启动时由deamons使用,以便与启动它的进程没有父关系.另见这个答案.
hlo*_*dal 1
如果您有某种服务器正在侦听传入连接,则可以分叉一个子进程来处理传入请求(不一定涉及 exec 或管道)。
归档时间:
16 年,3 月 前
查看次数:
3443 次
最近记录:
11 年,1 月 前