Spec-Zone.ru › Tokio

Функция pipe

pub fn pipe() -> Result<(Sender, Receiver)>
Доступно только в Unix и при включенной возможности crate net.

Создает новый анонимный канал Unix.

Эта функция открывает новый канал и связывает оба его конца с циклом обработки событий по умолчанию.

Если вам нужно создать канал для обмена данными с запущенным процессом, вместо этого можно использовать Stdio::piped().

Ошибки

Если создать канал не удастся, эта функция вернет соответствующую ошибку ОС.

Примеры

Создание канала и передача его записывающего конца запущенному процессу.

use tokio::net::unix::pipe;
use tokio::process::Command;

let (tx, mut rx) = pipe::pipe()?;
let mut buffer = String::new();

let status = Command::new("echo")
    .arg("Hello, world!")
    .stdout(tx.into_blocking_fd()?)
    .status();
rx.read_to_string(&mut buffer).await?;

assert!(status.await?.success());
assert_eq!(buffer, "Hello, world!\n");

Паники

Эта функция вызывает панику, если ее вызвать не из среды выполнения с включенным вводом-выводом.

Среда выполнения обычно устанавливается неявно, если эта функция вызывается из future, выполняемого средой выполнения tokio. В противном случае среду выполнения можно установить явно с помощью функции Runtime::enter.

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/net/unix/pipe/fn.pipe.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API