gpt4 book ai didi

multithreading - 如何从 Perl 中的 fileno 获取文件句柄?

转载 作者:行者123 更新时间:2023-12-03 22:43:21 25 4
gpt4 key购买 nike

我正在使用一个使用 threads 的 Perl 脚本。和 threads::shared .我想从一个单独的线程打开的文件句柄中读取,但是 threads::shared不能承认它是共享标量的值。

我在想也许我可以简单地分享 fileno 的结果到另一个线程,然后让它读取它。问题是我不知道如何处理这个数字。如果答案在文档中,我可能没有在寻找正确的东西,因为我还没有找到它。 如何从其fileno 中获取实际的文件句柄?值(value)?

如果这不可能,有没有办法在创建两个线程后打开文件句柄并将其传递给另一个线程?

提前感谢您的任何建议。

最佳答案

使用 open :

If you specify '<&=X', where X is a file descriptor number or a filehandle, then Perl will do an equivalent of C's fdopen of that file descriptor

my $fileno = 0;
open(my $stdin, "<&=$fileno"); # 2-argument form
open(my $stdin, "<&=", $fileno); # or use 3-argument form

如果您更喜欢面向对象的方法,可以使用 IO::File fdopen new_from_fd 方法(正如鲍罗丁指出的那样):

use IO::File;
my $stdin = IO::File->new_from_fd($fileno, 'r');

关于multithreading - 如何从 Perl 中的 fileno 获取文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25337590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com