小编Lom*_*mky的帖子

将select(2)和缓冲IO组合成文件句柄是否安全?

我正在使用IO :: Select来跟踪可变数量的文件句柄以供阅读.我遇到的文档强烈建议不要将select语句与<>(readline)结合起来从文件句柄中读取.

我的情况:

我只会使用一次文件句柄,即当select为我提供文件句柄时,它将被完全使用,然后从select中删除.我将收到一个哈希值和一个可变数量的文件.我不介意这会阻塞一段时间.

有关更多上下文,我是一个发送信息以供我的服务器处理的客户端.每个文件句柄都是我正在与之交谈的不同服务器.服务器完成后,哈希结果将从每个服务器发回给我.在该哈希内部是一个数字,表示要遵循的文件数.

我希望使用readline以便与现有项目代码集成以传输Perl对象和文件.

示例代码:

my $read_set = IO::Select()->new;
my $count = @agents_to_run; #array comes as an argument

for $agent ( @agents_to_run ) { 
    ( $sock, my $peerhost, my $peerport ) 
        = server($config_settings{ $agent }->
            { 'Host' },$config_settings{ $agent }->{ 'Port' };
    $read_set->add( $sock );

}

while ( $count > 0) {
    my @rh_set = IO::Select->can_read();

    for my $rh ( @{ $rh_set } ) {

            my %results = <$rh>;
            my $num_files = $results{'numFiles'};
            my @files = (); …
Run Code Online (Sandbox Code Playgroud)

io perl buffer

5
推荐指数
1
解决办法
1109
查看次数

标签 统计

buffer ×1

io ×1

perl ×1