当然可以。在启动进程、进行一些数据初始化之后再生成多个工作线程是很常见的做法。它们在地址空间中都有相同的数据,且采用写时复制技术。另一个常见的做法是让主进程监听TCP套接字,并为每个连接派生出一个子进程(fork())。这样新连接可以立即处理,而现有连接可以并行处理。请注意,在fork()之后,两个进程都可以访问fork()之前存在的所有数据。
另一种使用fork的方法是从父进程中分离出来(回退到init,即进程1)。如果某个进程(例如具有pid 1111的bash)启动了myserver,该进程的pid为2222,则1111将成为其父级。假设2222进行了分叉,并且子进程得到了pid 3333。现在,如果进程2222退出,则3333将失去其父级,并且代之以init作为其新的父级。此策略有时被守护程序用于启动,以便不与启动它的进程存在父子关系。另请参见此答案。