gpt4 book ai didi

ipc - 你如何在 Rust 中进行进程间通信 (IPC)?

转载 作者:行者123 更新时间:2023-11-29 07:43:04 98 4
gpt4 key购买 nike

是否有标准库的一部分?

我一直在四处挖掘,但我看不到任何明显的实现它的东西,或者在 Process 上的任何东西可以让你这样做?

我错过了吗?还是我必须为此功能做一些 C 包装器工作?

(如果是这样,序列化一个正在 Send 的对象并将其传递给另一个进程,然后在那里反序列化它是否“安全”?这就是 Send 的意思,对吗? )

最佳答案

在 Rust 中没有单一的进程间通信方式。您将需要使用您想要的任何技术:管道、裸套接字(TCP 或 UDP)、共享内存、nanomsg/ZeroMQ,等等。

此外,Send 并不意味着您可以序列化实现它的类型的对象并发送到另一个进程。这意味着数据可以安全地发送到另一个线程(例如,它不包含对源线程堆栈的任何引用),并且与序列化无关。

例如,IPC 的一种基本形式是父进程和子进程之间的标准输入/标准输出管道。 Process API 允许您通过这些管道发送和接收数据:

use std::io::process::Command;

fn main() {
let mut p = Command::new("tr").arg("a-z").arg("A-Z").spawn().unwrap();

{
let mut p_stdin = p.stdin.as_mut().unwrap();
p_stdin.write_str("hello world").unwrap();
}
p.wait().unwrap().success();

let response = p.stdout.as_mut().unwrap().read_to_string().unwrap();
println!("Responded: {}", response);
}

或者你可以使用套接字,但是这个例子会非常大。您可以找到套接字 API 文档 here .

关于ipc - 你如何在 Rust 中进行进程间通信 (IPC)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27683266/

98 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com