是否有标准库的一部分?
我一直在挖掘,但我看不到任何立即明显的实现它,或任何东西Process可以让你这样做?
我错过了吗?或者我是否必须为此功能执行一些C-wrapper工作?
(如果是这样,序列化一个对象Send并将其传递给另一个进程是否"安全" ,然后在那里反序列化?那是什么Send意思?)
Vla*_*eev 14
在Rust中没有单一的祝福方式来进行进程间通信.您将需要使用您想要的任何技术:管道,裸套接字(TCP或UDP),共享内存,nanomsg/ZeroMQ等等.
也 Send并不意味着可以序列它实现它的类型的对象,发送到另一个进程.这意味着数据可以安全地发送到另一个线程(例如,它不包含对源线程堆栈的任何引用),并且它与序列化无关.
例如,IPC的基本形式之一是父进程和子进程之间的stdin/stdout管道. ProcessAPI允许您通过这些管道发送和接收数据:
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);
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用套接字,但示例会非常大.您可以在此处找到套接字API文档.
| 归档时间: |
|
| 查看次数: |
5709 次 |
| 最近记录: |