您正在从Perl 5.8.7查看此文档的版本。查看最新版本

执行fork(2)系统调用以创建在同一点运行相同程序的新进程。它将子进程pid返回给父进程,0子进程,或未定义如果fork不成功。文件描述符(有时还锁定这些描述符)是共享的,而其他所有内容都是复制的。在大多数支持fork()的系统上,都非常小心地使其非常高效(例如,在数据页上使用copy-On-write技术),使其成为过去几十年来多任务处理的主导范例。

从v5.6.0开始,Perl将尝试在分叉子进程之前刷新为输出打开的所有文件,但这在某些平台上可能不受支持(请参阅珀尔波特). 为了安全起见,您可能需要设置$|(英语$AUTOFLUSH)或调用自动冲洗()方法IO::句柄在任何打开的句柄上,以避免重复输出。

如果你如果不照顾你的孩子,你会积累僵尸。在某些系统上,可以通过设置$SIG{CHLD}(美元)“忽略”。另请参阅珍珠岩更多分叉和收割垂死儿童的例子。

请注意,如果您的分叉子级继承了诸如STDIN和STDOUT之类的系统文件描述符,这些描述符实际上是通过管道或套接字连接的,即使您退出,远程服务器(例如,CGI脚本或从远程shell启动的后台作业)也不会认为您完成了。你应该重新打开这些/开发/空如果有什么问题。