首页 > 后端开发 > C++ > 命名管道如何促进 Python 和 C# 中的进程间通信?

命名管道如何促进 Python 和 C# 中的进程间通信?

Linda Hamilton
发布: 2025-01-14 12:46:15
原创
765 人浏览过

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

使用命名管道的简单 IPC 测试应用程序

命名管道提供了一种强大的进程间通信(IPC)方法,可以在不同程序之间实现高效的数据交换。 此示例演示了一个基本的测试应用程序,其中一个进程发送消息并接收回复。

Python 实现

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# 实现

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板