为什么Windows上的ActivePerl程序停止接受套接字连接?

我正在使用基于套接字服务器的Windows上的Perl(ActivePerl)上的fork() ,但显然有问题(几次后不会接受连接),是否有任何解决方法?

以下是相关代码的一部分:

 while($client = $bind->accept()) { $client->autoflush(); if(fork()){ $client->close(); } else { $bind->close(); new_client($client); exit(); } } 

我建议安装Net :: server并使用它,因为可能没有令人信服的理由让你自己编写所有的监听和分配逻辑,Net :: server已经经过了很好的测试,可以在许多平台上工作,包括ActivePerl 。 Net :: server :: Fork个性与您正在编写的代码最相似,不过我建议使用Net :: server :: Prefork ,因为它以最低的成本提供更好的性能。

如果少数 ,你的意思是64,那么你应该看到这个讨论 。 在父进程中,您应该每隔一段时间调用一次waitpid -1,&WNOHANG来清理已完成的子进程。

Windows没有分叉。 试图模仿它通常给不到理想的结果。

最好的解决方案可能是重写你的代码,所以它不使用fork。 也许线程?