我正在开发一个使用基于 epoll 的事件循环来处理多个同时套接字连接的程序。当应用程序检测到有数据要读取时,它会调用一个 process_request() 子程序,该子程序使用缓冲 IO。例如:
sub process_request {
my ( $fh ) = @_;
if ( my $line = <$fh> ) {
# Do something interesting
}
}
麻烦的是这里使用缓冲I/O,epoll不知道缓冲区中有未读数据在等待,所以它不会再次调用process_request()。
所以问题是,如何检测 Perl 的文件句柄中是否有未读数据,以便只要数据保留在缓冲区中,我就可以再次调用 process_request()?