我正在使用使用线程和threads :: shared的Perl脚本。我想从一个单独的线程打开的文件句柄中读取内容,但是threads :: shared不能将其视为共享标量的值。
我在想也许我可以简单地将fileno的结果共享给另一个线程,然后让它读取它。问题是我不知道该怎么办。如果答案在文档中,则可能是因为我还没有找到合适的东西。如何从其fileno值获取实际的文件句柄?
如果这不可能,那么在创建两个线程之后是否可以打开文件句柄并将其传递给另一个线程?
在此先感谢您的任何建议。
使用打开:
如果指定
'<&=X'
,其中X
是文件描述符号或文件句柄,则Perl将执行fdopen
与该文件描述符的C等效的操作
my $fileno = 0;
open(my $stdin, "<&=$fileno"); # 2-argument form
open(my $stdin, "<&=", $fileno); # or use 3-argument form
如果您喜欢面向对象的方法,则可以使用IO :: File和fdopen
ornew_from_fd
方法(如Borodin所指出的):
use IO::File;
my $stdin = IO::File->new_from_fd($fileno, 'r');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句