如何在Perl中的线程之间共享文件句柄?

时间:2015-02-04 08:13:00

标签: perl sockets http

我有两个主题,

一个运行带有HTTP :: Daemon的循环,另一个运行基于IO :: Select的套接字服务器。

现在,当用户连接到HTTP服务时,它需要写入套接字服务器的客户端。

但是,在Perl中,我无法与threads::shared共享文件句柄。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

文件描述符是进程的全局,您可以使用fileno将文件句柄取消引用到其描述符。然后,它只是在线程之间传递这个简单的标量值并按数字重新打开。

HTTP::Daemon帖子中:

my $fileno = fileno $fh; 

通过程序正在使用的任何方式将数字传递给IO::Select线程(例如共享数组)。并在IO::Select主题中按编号重新打开句柄:

open my $fh, "&=$fileno";