Multithreading 在Perl中如何从文件号获取文件句柄?
我正在使用一个使用和的Perl脚本。我想读取由单独线程打开的文件句柄,但不能将其作为共享标量的值 我在想也许我可以简单地将结果分享给另一个线程,然后让它阅读。问题是我不知道该怎么处理这个号码。如果答案在文档中,我可能没有搜索正确的东西,因为我还没有找到它如何从其值中获取实际的文件句柄? 如果这是不可能的,是否有一种方法可以在创建两个线程后打开文件句柄并将其传递给另一个线程 提前感谢您的建议。使用:Multithreading 在Perl中如何从文件号获取文件句柄?,multithreading,perl,Multithreading,Perl,我正在使用一个使用和的Perl脚本。我想读取由单独线程打开的文件句柄,但不能将其作为共享标量的值 我在想也许我可以简单地将结果分享给另一个线程,然后让它阅读。问题是我不知道该怎么处理这个号码。如果答案在文档中,我可能没有搜索正确的东西,因为我还没有找到它如何从其值中获取实际的文件句柄? 如果这是不可能的,是否有一种方法可以在创建两个线程后打开文件句柄并将其传递给另一个线程 提前感谢您的建议。使用: 如果您像@cjm所说的那样指定”,则需要调用文件号上的fdopen 但是,从中使用fdopen方法
如果您像@cjm所说的那样指定
”,则需要调用文件号上的fdopen
但是,从中使用fdopen
方法更简单、可读性更强
看起来像这样
my $fh = IO::File->new;
$fh->fdopen($fileno, 'r');
请注意,(哪些子类IO::Handle
)是在Perl5版本14及更高版本中按需加载的,因此您不需要使用IO::File
,除非您有非常旧的Perl安装。您是用现代方法打开文件的吗?打开我的$file,'是。然后我从fileno($file)
获取值,并将其传递给其他线程。这可能会帮助您:
use IO::File;
my $stdin = IO::File->new_from_fd($fileno, 'r');
my $fh = IO::File->new;
$fh->fdopen($fileno, 'r');