fork 用于创建调用它的进程的副本。这通常是调用 exec 系列函数。除此以外还有什么fork的用法吗?我能想到一个。用管道函数做 IPC。
问问题
4274 次
5 回答
7
是的当然。启动一个进程,进行一些数据初始化然后产生多个工作人员是很常见的。它们的地址空间中都有相同的数据,并且是写时复制。
另一个常见的事情是让主进程侦听 TCP 套接字并为每个进入的连接 fork()。这样可以立即处理新连接,同时并行处理现有连接。
我认为您忘记了在 fork() 之后,两个进程都可以访问 fork() 之前进程中存在的所有数据。
于 2009-08-28T06:34:09.307 回答
6
fork 的另一个用途是与父进程分离(回退到 init,进程 1)。如果某个进程(例如 pid 为 1111 的 bash)启动 myserver 并获得 pid 2222,它将以 1111 作为父进程。假设 2222 分叉并且子进程获得 pid 3333。如果现在进程 2222 退出,则 3333 将失去其父进程,而是将 init 作为其新父进程。
启动时守护进程有时会使用此策略,以便与启动它的进程没有父关系。另请参阅此答案。
于 2009-08-28T06:39:03.947 回答
1
fork 的“用法”是创建一个Fork Bomb
于 2009-08-28T06:45:06.007 回答
1
如果你有某种服务器监听传入的连接,你可以派生一个子进程来处理传入的请求(这不一定涉及 exec 或管道)。
于 2009-08-28T06:32:50.183 回答
0
我写了一个小外壳,里面装满了叉子(是的,这是 exec..),尤其是对于管道元素。管道上的维基百科页面
于 2009-08-28T06:46:06.007 回答