为什么我的Perl sysread在从套接字读取时会阻塞?

时间:2009-10-07 09:48:05

标签: perl sockets

我在AIX 5.3上的Perl 5.8.2中做了sysread。根据文档,sysread在读取文件句柄的所有读取时应该给出0。

在我的场景中,文件句柄是STDIN并指向套接字。所以我基本上是从套接字做sysread。但是我永远不会从sysread获得0并且它只是阻止,即使在客户端发送了所有数据之后也是如此。

知道可能出现什么问题吗?

感谢。

2 个答案:

答案 0 :(得分:5)

你是什么意思“发送所有数据”?当句柄遇到文件结束条件时,sysread返回零,而当没有更多可用数据现在时,sysread返回零。对于套接字,当另一端关闭套接字以进行写入时,会发生读取时的EOF。 (好吧,如果发生网络超时等错误,undef也将返回{{1}},数值等于零。)

答案 1 :(得分:2)

查看select命令(具有4个参数的命令)。它可以告诉你 是否有任何输入要在您的文件句柄上读取。