Я использую fdpass crate для отправки файловых дескрипторов от одного процесса другому через сокет unix (меня не интересует совместимость, подходит только unix).
Используя mio, мне удается прослушивать события в этих файловых дескрипторах:
let fd = fdpass::recv_fd(&mut client, vec!(0u8)).unwrap();
let efd = EventedFd(&fd.into_raw_fd());
poll.register(&efd, Token(0), Ready::readable(), PollOpt::level()).unwrap();
Это прекрасно работает, но я бы хотел использовать BufReader
для чтения этого дескриптора файла построчно.Я пытался найти способ использовать from_raw_fd()
для чего-то, что безуспешно реализовывало бы BufReader
.Кажется, он существует только для таких вещей, как файлы или сетевые потоки.Единственное другое - это Stdio
, который не реализует Read, необходимый для BufRead
.
Какие-либо предложения относительно того, как я мог бы получить BufReader
из raw fd, не делая mio небезопасным для использования?
Кстати, файловые дескрипторы не являются файлами (хотя они могут быть в какой-то момент), поэтому я не могу использовать File::
, сейчас я просто отправляю клиентский stdin в виде необработанного fd через fdpass.