我正在编写一些服务器代码,通过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.
我在AIX 5.3上的Perl 5.8.2中做了一个sysread.根据文档,sysread当它从文件句柄读取所有读取时应该给0.
在我的场景中,文件句柄是STDIN并指向一个套接字.所以我基本上是sysread从套接字做的.但sysread即使在客户端发送了所有数据之后,我也从未获得0 并且它只是阻止.
知道什么可能是错的吗?
谢谢.