ホームページ > バックエンド開発 > C++ > 名前付きパイプは、単純なコンソール アプリケーションでのプロセス間通信をどのように促進できるでしょうか?

名前付きパイプは、単純なコンソール アプリケーションでのプロセス間通信をどのように促進できるでしょうか?

Susan Sarandon
リリース: 2025-01-14 12:30:44
オリジナル
113 人が閲覧しました

How Can Named Pipes Facilitate Inter-Process Communication in a Simple Console Application?

名前付きパイプ IPC をデモする単純なコンソール アプリケーション

名前付きパイプは、単一マシン上でプロセス間通信 (IPC) のための堅牢な方法を提供します。この例は、名前付きパイプを使用した基本的な IPC 接続を示しています。

プログラム 1 はメッセージ送信者として機能し、プログラム 2 はメッセージを受信します。 プログラム 1 は「Hello World」を送信し、プログラム 2 は「Roger That」で応答します。

サーバー (プログラム 2):

<code class="language-csharp">using System;
using System.IO.Pipes;

namespace ServerApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string pipeName = "MyPipe"; // Named pipe identifier
            using (var server = new NamedPipeServerStream(pipeName))
            {
                server.WaitForConnection();
                Console.WriteLine("Client connected.");

                using (var reader = new StreamReader(server))
                using (var writer = new StreamWriter(server))
                {
                    string message = reader.ReadLine();
                    Console.WriteLine($"Received: {message}");
                    writer.WriteLine("Roger That");
                    writer.Flush();
                }
            }
        }
    }
}</code>
ログイン後にコピー

クライアント (プログラム 1):

<code class="language-csharp">using System;
using System.IO.Pipes;

namespace ClientApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string pipeName = "MyPipe"; // Must match server's pipe name
            using (var client = new NamedPipeClientStream(pipeName))
            {
                client.Connect();
                Console.WriteLine("Connected to server.");

                using (var reader = new StreamReader(client))
                using (var writer = new StreamWriter(client))
                {
                    writer.WriteLine("Hello World");
                    writer.Flush();
                    Console.WriteLine("Sent: Hello World");
                    string response = reader.ReadLine();
                    Console.WriteLine($"Received: {response}");
                }
            }
        }
    }
}</code>
ログイン後にコピー

を実行するには: まず ServerApp.exe を起動し、次に ClientApp.exe を実行します。これは、単純なプロセス間通信に名前付きパイプを使用する基本原則を示しています。 必要に応じて pipeName を忘れずに調整してください。

以上が名前付きパイプは、単純なコンソール アプリケーションでのプロセス間通信をどのように促進できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート