Redirect process output C#

前端 未结 2 1255
一个人的身影
一个人的身影 2020-12-01 23:56

I would like to redirect the Process\'s standard output to a string for later parsing. I would also like to see the output on the screen, while the process is running, and n

相关标签:
2条回答
  • 2020-12-02 00:23

    Use RedirectStandardOutput.

    Sample from MSDN:

    // Start the child process.
    Process p = new Process();
    // Redirect the output stream of the child process.
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "Write500Lines.exe";
    p.Start();
    // Do not wait for the child process to exit before
    // reading to the end of its redirected stream.
    // p.WaitForExit();
    // Read the output stream first and then wait.
    string output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();
    

    Also see OutputDataReceived and BeginOutputReadLine() for an alternative to ReadToEnd(), that will better fulfill your "see output while the process is running" requirement.

    0 讨论(0)
  • 2020-12-02 00:44

    If you want to execute an exe from your c# application and get the output from it then you can use the below code

    System.Diagnostics.Process p = new System.Diagnostics.Process();            
    
    p.StartInfo.FileName = "PATH TO YOUR FILE";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.Arguments = metalType + " " + graphHeight + " " + graphWidth;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;              
    
    p.EnableRaisingEvents = true;
    p.Start();            
    svgText = p.StandardOutput.ReadToEnd();
    
    using(StreamReader s = p.StandardError)
    {
        string error = s.ReadToEnd();
        p.WaitForExit(20000);
    }
    

    Don't forgete to write p.EnableRaisingEvents = true;

    0 讨论(0)
提交回复
热议问题