Структура Open Options
pub struct OpenOptions { /* private fields */ }
net.Параметры и флаги, с помощью которых можно настроить открытие FIFO-файла.
Этот построитель позволяет настроить создание конца канала из FIFO-файла. В общем случае при использовании OpenOptions сначала вызовите new, затем последовательно вызовите методы, чтобы задать каждый параметр, а после этого вызовите либо open_receiver, либо open_sender, передав путь к FIFO-файлу, который требуется открыть. В результате вы получите io::Result с концом канала, с которым можно выполнять дальнейшие операции.
Примеры
Открытие пары концов канала из FIFO-файла:
use tokio::net::unix::pipe;
const FIFO_NAME: &str = "path/to/a/fifo";
let rx = pipe::OpenOptions::new().open_receiver(FIFO_NAME)?;
let tx = pipe::OpenOptions::new().open_sender(FIFO_NAME)?;Открытие Sender в Linux, если вы уверены, что файл является FIFO:
use tokio::net::unix::pipe;
use nix::{unistd::mkfifo, sys::stat::Mode};
// Our program has exclusive access to this path.
const FIFO_NAME: &str = "path/to/a/new/fifo";
mkfifo(FIFO_NAME, Mode::S_IRWXU)?;
let tx = pipe::OpenOptions::new()
.read_write(true)
.unchecked(true)
.open_sender(FIFO_NAME)?;
Реализации
impl OpenOptions
pub fn new() -> OpenOptions
Создаёт новый пустой набор параметров, готовый к настройке.
Изначально для всех параметров установлено значение false.
pub fn read_write(&mut self, value: bool) -> &mut Self
Задаёт параметр доступа на чтение и запись.
Если этот параметр имеет значение true, файл FIFO будет открыт в режиме доступа на чтение и запись. Эта операция не определена стандартом POSIX, и её работа гарантируется только в Linux.
Примеры
Открытие Sender, даже если нет открытых концов для чтения:
use tokio::net::unix::pipe;
let tx = pipe::OpenOptions::new()
.read_write(true)
.open_sender("path/to/a/fifo");
Открытие устойчивого Receiver, то есть конца канала для чтения, который не завершится ошибкой UnexpectedEof во время чтения, если все концы канала для записи закроют файл FIFO.
use tokio::net::unix::pipe;
let tx = pipe::OpenOptions::new()
.read_write(true)
.open_receiver("path/to/a/fifo");
pub fn unchecked(&mut self, value: bool) -> &mut Self
Задаёт параметр, отключающий проверку типа файла FIFO.
По умолчанию функции open_receiver и open_sender проверяют, является ли открываемый файл файлом FIFO. Установите для этого параметра значение true, если вы уверены, что файл является файлом FIFO.
Примеры
use tokio::net::unix::pipe;
use nix::{unistd::mkfifo, sys::stat::Mode};
// Our program has exclusive access to this path.
const FIFO_NAME: &str = "path/to/a/new/fifo";
mkfifo(FIFO_NAME, Mode::S_IRWXU)?;
let rx = pipe::OpenOptions::new()
.unchecked(true)
.open_receiver(FIFO_NAME)?;pub fn open_receiver<P: AsRef<Path>>(&self, path: P) -> Result<Receiver>
Создаёт Receiver из файла FIFO с параметрами, заданными в self.
Эта функция откроет файл FIFO по указанному пути, при необходимости проверит, является ли он каналом, и свяжет канал с циклом обработки событий по умолчанию для чтения.
Ошибки
Если проверка типа файла завершится неудачно, эта функция вернёт ошибку io::ErrorKind::InvalidInput. Также эта функция может завершиться с другими стандартными ошибками ОС.
Паника
Эта функция вызывает панику, если её вызвать вне среды выполнения с включённым вводом-выводом.
Среда выполнения обычно устанавливается неявно, когда эта функция вызывается из future, выполняемого средой выполнения tokio. В противном случае среду выполнения можно установить явно с помощью функции Runtime::enter.
pub fn open_sender<P: AsRef<Path>>(&self, path: P) -> Result<Sender>
Создаёт Sender из файла FIFO с параметрами, заданными в self.
Эта функция откроет файл FIFO по указанному пути, при необходимости проверит, является ли он каналом, и свяжет канал с циклом обработки событий по умолчанию для записи.
Ошибки
Если проверка типа файла завершится неудачно, эта функция вернёт ошибку io::ErrorKind::InvalidInput. Если файл открыт не в режиме доступа на чтение и запись и в данный момент не открыт для чтения, эта функция вернёт ошибку ENXIO. Также эта функция может завершиться с другими стандартными ошибками ОС.
Паника
Эта функция вызывает панику, если её вызвать вне среды выполнения с включённым вводом-выводом.
Среда выполнения обычно устанавливается неявно, когда эта функция вызывается из future, выполняемого средой выполнения tokio. В противном случае среду выполнения можно установить явно с помощью функции Runtime::enter.
Реализации трейтов
impl Clone for OpenOptions
fn clone(&self) -> OpenOptions
fn clone_from(&mut self, source: &Self)
source. Подробнее
impl Debug for OpenOptions
impl Default for OpenOptions
fn default() -> OpenOptions
Автоматические реализации трейтов
impl Freeze for OpenOptions
impl RefUnwindSafe for OpenOptions
impl Send for OpenOptions
impl Sync for OpenOptions
impl Unpin for OpenOptions
impl UnsafeUnpin for OpenOptions
impl UnwindSafe for OpenOptions
Обобщённые реализации
impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Twhere T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> ToOwned for Twhere T: Clone,
type Owned = T
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/net/unix/pipe/struct.OpenOptions.html