代码之家  ›  专栏  ›  技术社区  ›  blez

如何写入另一个应用的stdin?

  •  7
  • blez  · 技术社区  · 15 年前

    我有一个模块可以读取进程的标准错误。一切正常,但我想做些不同的事。我不知道如何像本地方式一样重定向stdin:

    app1.exe -someargs | app2.exe -someargs

    其中app2读取其stdin中app1的所有stdout。

    3 回复  |  直到 10 年前
        1
  •  3
  •   stakx - no longer contributing Saravana Kumar    15 年前

    请查看MSDN参考文档,了解以下内容(两者都可以在 System.Diagnostics 命名空间):

    对于您的特定示例,以下是您的设置方式:

    1. 附录1 开始 附录2 作为子进程使用 Process

    2. 附录1 写入 附录2 的标准输入 .StandardInput 溪流 过程 与关联的对象 附录2 .

    3. 附录2 Console.ReadLine() ).

        2
  •  8
  •   Daniel A.A. Pelsmaeker    15 年前

    一旦你有了 Process 表示要与之通信的进程的 Process.GetProcesses ,或者因为是您自己创建的),您可以附加 StreamWriter Process.StandardInput 属性并使用它写入进程的stdin。别忘了设置 ProcessStartInfo.RedirectStandardInput 在新创建的进程上 true

    在相关注释中,您可以使用 StreamReader Process.StandardOutput StandardError ).

        3
  •  0
  •   Community CDub    8 年前

    我不得不使用BinaryWriter,这篇文章解释了: BinaryWriter and StdIn