我有一个Perl程序,需要在后台同时运行大约六个程序,并等待它们全部完成后再继续。每个人的退出状态都可以被捕获也是非常重要的。如何在Perl中管理多个子进程?
在Perl中这样做有一个常见的习惯用法吗?我目前正在考虑使用线程。
我有一个Perl程序,需要在后台同时运行大约六个程序,并等待它们全部完成后再继续。每个人的退出状态都可以被捕获也是非常重要的。如何在Perl中管理多个子进程?
在Perl中这样做有一个常见的习惯用法吗?我目前正在考虑使用线程。
不要使用线程。线程吮吸。正确的方法是让fork
多个进程和wait
完成。如果使用wait
或waitpid
,则有问题的进程的退出状态将在$?
中提供。
参见perldocs文档为fork,wait,和waitpid,以及在this实施例SO线程。
如果您只需要管理一个不超过特定大小的子流程池,请查看优秀的Parallel::ForkManager。
通常你会叉+ EXEC(基于UNIX的系统,这是传统的)
叉的通话将复制当前进程,如果你需要,你则可以调用exec在孩子一做有些不同。这听起来像你只是想在你的子进程中分叉和调用一个不同的方法/函数。
如果你想要更复杂的东西,请检查POE的cpan - 让你管理各种复杂的场景。
相关链接:
谷歌 “perl的食谱分叉服务器” 太 - 只允许发布一个链接,除非我登录
借调'线程吸'评论。至少在Perl中。甚至不要打扰。 – fennec 2010-02-24 02:42:23