在Ruby中创建命名管道

7

我正在尝试在 Ruby 中创建一个命名管道。除了使用 system 命令 (system("mkfifo #{pipe_name}")),还有没有原生的 Ruby 函数可以让我做到这一点?


使用Ruby函数与使用系统命令相比,有哪些好处? - Velizar Hristov
1个回答

10

目前的 Ruby 版本(从 2.3.0 开始)现在具有原生 File::mkfifo

File.mkfifo('pipe_name')

Ruby旧版本的旧答案:

我认为没有完全本地化的东西,但有mkfifo gem

安装方式如下:

gem install mkfifo

然后这样使用:

require "mkfifo"
File.mkfifo('pipe_name')

似乎还存在一个全能解决方案 https://github.com/shurizzle/ruby-fifo - Casper
1
如果你仔细看的话,这两个宝石是同一位作者创作的。"mkfifo"是11个月前创建的,而"ruby-fifo"是3年前创建的,但我不确定哪一个更好。mkfifo将fifo捆绑到File类中,因此可以像使用常规文件一样使用fifo。 - Yang Guan
据我所见,ruby-fifo依赖于ruby-mkfifo。 - Nakilon
1
Ruby 2.3.0 引入了本地的 File::mkfifo - Steve
@Steve 谢谢你让我知道了,我已经更新了我的答案。 - Darshan Rivka Whittle
本地方法在Windows上未实现。github.com/shurizzle/ruby-fifo表示它是跨平台的。 - Benjineer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接