using System.Collections.Generic; using System.Diagnostics; namespace Semmle.Util { public static class ProcessStartInfoExtensions { /// /// Runs this process, and returns the exit code, as well as the contents /// of stdout in . /// public static int ReadOutput(this ProcessStartInfo pi, out IList stdout) { stdout = new List(); using var process = Process.Start(pi); if (process is null) { return -1; } string? s; do { s = process.StandardOutput.ReadLine(); if (s is not null) stdout.Add(s); } while (s is not null); process.WaitForExit(); return process.ExitCode; } } }