Как я могу читать из необработанного файлового дескриптора?
Я пишу службу активации сокета systemd в Rust. Мой процесс получает открытый файловый дескриптор от systemd.
Существуют ли какие-либо функции ввода-вывода Rust, которые принимают необработанный файловый дескриптор?
Edit: я использую Rust nightly.
2 ответа:
Я думаю, что сейчас лучше всего использовать libc crate для работы с необработанными файловыми дескрипторами.
Перемещение
FileDescв частную область было вызвано удалением среды выполнения несколько месяцев назад. Смотрите этот RFC для некоторого дополнительного контекста.std::os::unixв настоящее время имеет типFd, и я считаю, что долгосрочная идея состоит в том, чтобы предоставить больше функциональности платформы в этом модуле.
Я просто исследую ржавчину сам, но после поиска немного, придумал следующее использование ящика
native: (используя файловый дескриптор " 1 " Для примера-1 этоstdout)extern crate native; use native::io::file::FileDesc as FileDesc; fn main() { let mut f = FileDesc::new(1, true); let buf = "Hello, world!\n".as_bytes(); f.inner_write(buf); }(проверено с помощью
rustc 0.13.0-nightly. Обратите внимание, что методinner_write, возможно, был переименован вwriteв более поздних версияхlibstd)Обновление
Ящик
nativeбыл недавно удален из стандартной библиотеки иFileDesc, хотя все еще существует, посколькуstd::sys::fs::FileDescбольше не является общедоступным...