我正在使用Process.Start生成一些子进程。我的进程和子进程都是控制台应用程序。子进程的stdout显示在父控制台窗口中。为了避免这种情况,我重定向了stdout,但输出仍然出现。我的设置如下:
var proc = Process.Start(new ProcessStartInfo
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
FileName = filename,
Arguments = args,
CreateNoWindow = false
});
var stderr = proc.StandardError.ReadToEndAsync();
var stdout = proc.StandardOutput.ReadToEndAsync();
var stdin = proc.StandardInput.WriteAsync(stdintext).ContinueWith(something => proc.StandardInput.Close());
proc.WaitForExit();
Task.WaitAll(stderr, stdout, stdin);
// Process output
我不会将stdout写入我自己的stdout,但它仍然出现在父控制台中。这似乎只发生在某些子进程而非其他进程中。我没有在这里运行工具的源代码。如何阻止此输出发生?