Named Pipes bieten eine robuste Methode für die Interprozesskommunikation (IPC) und ermöglichen einen effizienten Datenaustausch zwischen verschiedenen Programmen. Dieses Beispiel zeigt eine einfache Testanwendung, bei der ein Prozess eine Nachricht sendet und eine Antwort empfängt.
Der Python-Code verwendet das Modul multiprocessing
, um einen Sender- und einen Empfängerprozess zu erstellen.
Absenderprozess:
<code class="language-python">import multiprocessing def sender(): pipe_in, pipe_out = multiprocessing.Pipe() p = multiprocessing.Process(target=receiver, args=(pipe_in,)) p.start() pipe_out.send("Hello from Python") p.join() </code>
Empfängerprozess:
<code class="language-python">def receiver(pipe_in): message = pipe_in.recv() print(message) # Output: Hello from Python pipe_in.send("Acknowledged from Python")</code>
Der C#-Code nutzt benannte Pipe-Client- und Server-Streams für den IPC-Mechanismus.
<code class="language-csharp">using System; using System.IO; using System.IO.Pipes; using System.Threading.Tasks; class Program { static void Main() { StartServer(); Task.Delay(1000).Wait(); // Allow server to start // Client using (var client = new NamedPipeClientStream("PipesOfPeace")) { client.Connect(); using (StreamWriter writer = new StreamWriter(client)) { writer.WriteLine("Hello from C#"); writer.Flush(); } using (StreamReader reader = new StreamReader(client)) { string response = reader.ReadLine(); // Reads "Acknowledged from C#" Console.WriteLine(response); } } } static void StartServer() { Task.Factory.StartNew(() => { using (var server = new NamedPipeServerStream("PipesOfPeace")) { server.WaitForConnection(); using (StreamReader reader = new StreamReader(server)) { string message = reader.ReadLine(); // Reads "Hello from C#" Console.WriteLine(message); } using (StreamWriter writer = new StreamWriter(server)) { writer.WriteLine("Acknowledged from C#"); writer.Flush(); } } }); } }</code>
Beide Beispiele veranschaulichen die Grundprinzipien der Verwendung benannter Pipes für die Kommunikation zwischen Prozessen. Eine Nachricht wird gesendet, empfangen und eine Antwort zurückgesendet, was eine einfache, aber effektive IPC-Lösung veranschaulicht.
Das obige ist der detaillierte Inhalt vonWie können Named Pipes die Interprozesskommunikation in Python und C# erleichtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!