Heim > Backend-Entwicklung > C++ > Wie können Named Pipes die Interprozesskommunikation in Python und C# erleichtern?

Wie können Named Pipes die Interprozesskommunikation in Python und C# erleichtern?

Linda Hamilton
Freigeben: 2025-01-14 12:46:15
Original
726 Leute haben es durchsucht

How Can Named Pipes Facilitate Interprocess Communication in Python and C#?

Eine einfache IPC-Testanwendung mit benannten Pipes

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.

Python-Implementierung

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

C#-Implementierung

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage