Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Windows上的ActivePerl程序停止接受套接字连接?_Windows_Perl_Sockets_Activeperl - Fatal编程技术网

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

为什么Windows上的ActivePerl程序停止接受套接字连接?,windows,perl,sockets,activeperl,Windows,Perl,Sockets,Activeperl,我正在使用Windows上Perl(ActivePerl)上的fork()作为基本套接字服务器,但显然存在一些问题(几次之后它将不接受连接),有什么解决方法吗 以下是相关代码的部分: while($client = $bind->accept()) { $client->autoflush(); if(fork()){ $client->close(); } else { $bind->close(); new_client($client); e

我正在使用Windows上Perl(ActivePerl)上的
fork()
作为基本套接字服务器,但显然存在一些问题(几次之后它将不接受连接),有什么解决方法吗

以下是相关代码的部分:

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

窗户没有叉子。试图模仿它通常会产生不太理想的结果

最好的解决方案可能是重写代码,使其不使用fork。可能是线程?

我建议安装并使用它,因为可能没有令人信服的理由让您自己编写所有侦听和分叉逻辑,而且Net::Server已经在包括ActivePerl在内的许多平台上进行了良好的测试。个性与您正在编写的代码最为相似,不过我建议您改用它,因为它以最低的成本提供了更好的性能。

如果说几个,您的意思是64,那么您应该看到。在父进程中,您应该每隔一段时间调用
waitpid-1和&WNOHANG
,以清理已完成的子进程。

Windows上的Perl在后台使用线程模拟fork()。