yapmak için hiçbir tek mübarek yolu yoktur (bu nedenle, o zaman orada bu serisini? Yani Send
doğru anlama geliyor?, Send
olan bir nesne seri ve ona başka bir işlem geçmesine 'güvenli' it ise) Rust'ta süreçler arası iletişim. İstediğiniz teknolojiyi kullanmanız gerekecek: borular, çıplak yuvalar (TCP veya UDP), paylaşılan bellek, nanomsg/ZeroMQ, her neyse. Ayrıca, Send
da Send
Send
, bunu uygulayan ve başka bir işleme gönderen bir nesneyi serileştirebileceğiniz anlamına gelmez. Bu, verilerin güvenli bir şekilde başka bir parçasına gönderilebileceği anlamına gelir (ör., Kaynak parçacığı yığınında herhangi bir referans içermez) ve serileştirme ile ilgili değildir. Örneğin, IPC'nin temel formlarından biri ana ve alt süreçler arasında stdin/stdout borularıdır. Örneğin;
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);
}
Yoksa yuvalarını kullanabilirsiniz, ancak örnek oldukça büyük olacaktır: Process
API bu borular sayesinde veri göndermek ve almak için izin verir. Soket API belgelerini here bulabilirsiniz.
Aklımda işlemler arasında iletişim kurmayı sağlayan TCP ve UDP soketleri var. Yoksa belirli bir IPC türünü mi kastediyorsunuz? Belki birlikte çalışmak istediğiniz bir şey var mı? Akılda tuttuğunuz IPC'nin örnekleri var mı? – Shepmaster