基于 stdin 和 stdout 的 C# 双向 IPC

发布于 2024-07-22 11:44:27 字数 177 浏览 7 评论 0原文

如何连接两个 C# 进程,以便它们可以通过 stdin 和 stdout 相互通信?

像这样:

过程A --> 标准输出 A --> 标准输入 B ---> 进程 B

进程 A <-- 标准输入 A <-- 标准输出 B <--- 进程 B

How can I connect two C# processes so they can communicate with each other over stdin and stdout?

Like this:

Process A --> stdout A --> stdin B ---> Process B

Process A <-- stdin A <-- stdout B <--- Process B

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晰传感 2024-07-29 11:44:27
using System;
using System.Diagnostics;

class Program
{
  static void Main(string[] args)
  {
    string name;
    if (args.Length > 0 && args[0] == "slave")
    {
      name = "slave";
    }
    else
    {
      name = "master";
      var info = new ProcessStartInfo();
      info.FileName = "BidirConsole.exe";
      info.Arguments = "slave";
      info.RedirectStandardInput = true;
      info.RedirectStandardOutput = true;
      info.UseShellExecute = false;
      var other = Process.Start(info);
      Console.SetIn(other.StandardOutput);
      Console.SetOut(other.StandardInput);
    }
    Console.WriteLine(name + " started.");
    while (true)
    {
      var incoming = Console.ReadLine();
      var outgoing = name + " got : " + incoming;
      Console.WriteLine(outgoing);
      System.Threading.Thread.Sleep(100);
    }
  }
}
using System;
using System.Diagnostics;

class Program
{
  static void Main(string[] args)
  {
    string name;
    if (args.Length > 0 && args[0] == "slave")
    {
      name = "slave";
    }
    else
    {
      name = "master";
      var info = new ProcessStartInfo();
      info.FileName = "BidirConsole.exe";
      info.Arguments = "slave";
      info.RedirectStandardInput = true;
      info.RedirectStandardOutput = true;
      info.UseShellExecute = false;
      var other = Process.Start(info);
      Console.SetIn(other.StandardOutput);
      Console.SetOut(other.StandardInput);
    }
    Console.WriteLine(name + " started.");
    while (true)
    {
      var incoming = Console.ReadLine();
      var outgoing = name + " got : " + incoming;
      Console.WriteLine(outgoing);
      System.Threading.Thread.Sleep(100);
    }
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文