【问题标题】:Seeing console output of a sub process started by a .net application查看由 .net 应用程序启动的子进程的控制台输出
【发布时间】:2020-06-24 08:30:19
【问题描述】:

我的应用程序创建了一组在后台运行的子进程。这些进程都有日志记录到文件和控制台。在 cmd 之外创建进程后,是否可以打开 cmd 并查看进程的控制台输出?

    var p = new Process
            {
                StartInfo =
                {
                    FileName = path,
                    Arguments = arguments,
                    WindowStyle = ProcessWindowStyle.Hidden
                }
            };

    p.Start();

【问题讨论】:

标签: c# .net process


【解决方案1】:

您无法访问子流程的控制台,但您可以重定向输出(理想情况下是stdoutstderr)和管道将它们发送到您的自己的控制台/显示器。一个子进程重定向stdout的例子是shown in full on MSDN

【讨论】:

  • 是的,这正是我想要的。将标准输出重定向到我自己的控制台。谢谢!
  • 那么如果我创建一个RedirectStandardOutput = true的进程,是否可以打开cmd并监听输出?
  • @Q-bertsuit 我不确定其中的“open cmd”位是什么意思;如果您正在创建一个进程,则 cmd 根本不涉及 - 它只是您的进程和另一个进程,但是是的:您可以访问三个管道 (stdout/stdin/stderr) - 但是您需要使用UseShellExecute = false 来执行此操作(这是如何/为什么您直接与其他进程交谈)
  • 我的意思是,如果我在 Windows 上打开命令提示符,假设我知道 PID,有没有办法“监听”从正在运行的进程重定向的标准输出?
  • @Q-bertsuit 这与谈论您产生的进程是一个非常不同的问题; “不知道”
猜你喜欢
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
相关资源
最近更新 更多