繁体   English   中英

生成进程时如何重定向标准输出

[英]How to redirect standard output when spawning a process

我为内部服务器构建了一个Web服务,我想向该服务器发送命令并启动一个进程。 所以我想像这样发送命令:

http://machine:999/execute?path=c:\scripts\dostuff.exe&args=-test

然后,端点将执行以下操作:

public ActionResult(string path, string args)
{

    var proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = path;
    proc.StartInfo.Arguments = args;
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.CreateNoWindow = true;
    proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    proc.StartInfo.RedirectStandardOutput = true;

    //Hook into all standard output here

    //Block until process is returned - Async Controller action

    return Content(output.ToString())
}

我希望能够捕获可执行文件生成的所有错误消息和标准输出。 可执行文件可以是控制台应用程序或Powershell脚本之类的东西。 做这样的事情的最佳方法是什么?

使用proc.StandardOutput.ReadToEnd()将重定向的输出流读取到末尾,并将其返回。

您可能还需要将RedirectStandardError设置为True,并使用proc.StandardError进行相同的操作以获取错误消息。 您可以生成一个后台线程来同步读取标准错误,同时读取主线程中的标准输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM