Я пытаюсь создать именованный канал внутри Ruby. Помимо использования команды system
(system("mkfifo #{pipe_name}")
), есть ли встроенная функция Ruby, позволяющая мне это сделать?
Создать именованный канал в Ruby
comment
Есть ли какие-либо преимущества в функции Ruby по сравнению с использованием системной команды?
- person Velizar Hristov   schedule 03.07.2015
Ответы (1)
Текущие версии Ruby (начиная с 2.3.0) теперь имеют собственный Файл::mkfifo:
File.mkfifo('pipe_name')
Старый ответ для старых версий Ruby:
Я не верю, что есть что-то полностью нативное, но есть жем mkfifo.
Установите так:
gem install mkfifo
Затем используйте так:
require "mkfifo"
File.mkfifo('pipe_name')
person
Darshan Rivka Whittle
schedule
22.06.2013
Также существует универсальное решение github.com/shurizzle/ruby-fifo
- person Casper; 22.06.2013
Если присмотреться, эти две жемчужины принадлежат одному и тому же автору. mkfifo был создан 11 месяцев назад, а ruby-fifo — 3 года назад, но я не уверен, какой из них лучше. mkfifo связывает fifo с классом File, поэтому fifo можно использовать как обычный файл.
- person Yang Guan; 22.06.2013
Как я вижу, ruby-fifo зависит от ruby-mkfifo.
- person Nakilon; 29.07.2017
Добавлен собственный File::mkfifo. в Руби 2.3.0.
- person Steve; 28.03.2018
@Steve Спасибо, что сообщили мне — я обновил свой ответ.
- person Darshan Rivka Whittle; 28.03.2018
Собственный метод не реализован в Windows. github.com/shurizzle/ruby-fifo говорит, что он кроссплатформенный.
- person Benjineer; 08.03.2019