Perl - Win32 - 如何从另一个进程执行文件句柄的非阻塞读取?

sch*_*olf 2 perl winapi asynchronous file

我正在编写一些服务器代码,通过STDIN与客户端进程通信.我正在尝试编写一段perl代码片段,异步接收来自客户端STDOUT的响应.代码的阻止版本可能如下所示:

sub _read_from_client
{
   my ($file_handle) = @_;
   while (my $line = <$file_handle>) {
      print STDOUT $line;
   }
   return;
}
Run Code Online (Sandbox Code Playgroud)

重要的是,该代码段需要在Win32平台上运行.*nix平台有很多我不感兴趣的解决方案.我使用的是ActivePerl 5.10.

xdg*_*xdg 5

Perlmonks上的这个线程建议你可以用Perl这样在Windows上创建套接字非阻塞:

ioctl($socket, 0x8004667e, 1);
Run Code Online (Sandbox Code Playgroud)

该主题中的更多细节和资源