名前付きパイプは、プロセス間通信 (IPC) のための堅牢な方法を提供し、異なるプログラム間での効率的なデータ交換を可能にします。 この例では、1 つのプロセスがメッセージを送信し、応答を受信する基本的なテスト アプリケーションを示します。
Python コードは multiprocessing
モジュールを使用して送信側プロセスと受信側プロセスを作成します。
送信者プロセス:
<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>
受信側プロセス:
<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>
C# コードは、IPC メカニズムに名前付きパイプのクライアント ストリームとサーバー ストリームを利用します。
<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>
どちらの例も、プロセス間通信に名前付きパイプを使用する基本原則を示しています。 メッセージが送信、受信され、応答が送り返されるという、シンプルかつ効果的な IPC ソリューションを示します。
以上が名前付きパイプは Python と C# でのプロセス間通信をどのように促進できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。