Wie funktioniert Interprozesskommunikation (IPC) in Rust?

9

Gibt es dafür einen Teil der Standardbibliothek?

Ich habe herumgegrubbelt, aber ich kann nichts sofort erkennen, das es implementiert, oder irgendetwas auf Process , das euch das erlauben würde?

Habe ich es vermisst? Oder muss ich etwas C-Wrapper für diese Funktionalität tun?

(Wenn ja, ist es 'sicher', ein Objekt, das Send ist, zu serialisieren und einen anderen Prozess zu übergeben, dann wird es dort deserialisiert? Das ist Send bedeutet richtig?)

    
Doug 29.12.2014, 04:08
quelle

2 Antworten

11

Es gibt keinen einzigen gesegneten Weg, in Rust Interprozesskommunikation zu betreiben. Sie müssen die von Ihnen gewünschte Technologie verwenden: Pipes, nackte Sockets (TCP oder UDP), Shared Memory, nanomsg / ZeroMQ, was auch immer.

Auch Send bedeutet nicht, dass Sie ein Objekt eines Typs serialisieren können, der es implementiert und an einen anderen Prozess sendet. Das bedeutet, dass die Daten sicher an einen anderen -Thread gesendet werden können (z. B. enthält es keine Referenzen in den Stapel des Quell-Threads) und steht nicht mit der Serialisierung in Verbindung.

Eine der grundlegenden Formen von IPC sind beispielsweise stdin / stdout-Pipes zwischen übergeordneten und untergeordneten Prozessen. Process API ermöglicht das Senden und Empfangen von Daten über diese Pipes:

%Vor%

Oder Sie können Sockets verwenden, aber das Beispiel wäre ziemlich groß. Sie können die Socket-API-Dokumentation hier finden.

    
Vladimir Matveev 29.12.2014 07:55
quelle
2

Ich empfehle Ihnen, sich die plibsys -Bibliothek anzusehen. Eine triviale Bindung Bindung ist verfügbar als Ausgangspunkt für jeden, der eine idiomatische Rust-Bindung schreiben möchte.

>

Wenn Sie nur nach einem einfachen, praktischen IPC in Rust suchen, ist das Zurückgreifen auf die C IPC-Mechanismen derzeit die einzige wirkliche Lösung. plibsys ist einfach eine praktische portable High-Level-C-API, mit der man das machen kann.

    
Doug 24.06.2016 05:54
quelle

Tags und Links