fork系统调用的应用

时间:2009-08-28 06:25:25

标签: unix fork

fork用于创建其调用的进程副本。 通常会调用exec系列函数。 除此之外还有叉子的用法吗? 我能想到一个。用管道功能做IPC。

5 个答案:

答案 0 :(得分:6)

当然可以。启动进程,进行一些数据初始化然后生成多个worker是很常见的。它们的地址空间都有相同的数据,而且它是Copy On Write。

另一个常见的事情是让主进程为每个进入的连接侦听TCP套接字和fork()。这样就可以在并行处理现有连接时立即处理新连接。

我认为你忘了在fork()之后,两个进程都可以访问fork()之前进程中存在的所有数据。

答案 1 :(得分:5)

fork的另一个用途是从父进程分离(回退到init,进程1)。如果某个进程,比如使用pid 1111进行bash,则启动myserver获取pid 2222,它将有1111作为父进程。假设2222分叉和孩子获得pid 3333.如果现在进程2222退出,3333将松开其父代,而不是它将init作为其新父代。

这种策略有时在启动时由deamons使用,以便与启动它的进程没有父关系。另请参阅this answer

答案 2 :(得分:1)

fork的“用法”是创建Fork Bomb

答案 3 :(得分:0)

如果您有某种服务器侦听传入连接,您可以派生子进程来处理传入请求(不一定涉及exec或管道)。

答案 4 :(得分:0)

我写了一个小壳,它装满了叉子(是的,这是exec ..),特别是对于管道元素。 wikipedia page on pipe