gpt4 book ai didi

c# - .NET System.Process : when you redirect StandardError, 控制台窗口没有收到任何输出

转载 作者:太空宇宙 更新时间:2023-11-03 14:52:17 28 4
gpt4 key购买 nike

我想获取控制台程序的错误输出以防它崩溃。但我希望标准输出显示在控制台窗口中。但是,如果我重定向标准错误,则不会向控制台窗口输出任何内容。

Dim p As New Process
p.StartInfo.Filename = filename
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardError = True
p.EnableRaisingEvents = True
p.Start
p.BeginReadErrorLine

所以现在如果启动的进程(一个控制台程序)崩溃了,我会得到预期的错误输出。但是,标准输出在控制台程序中是不可见的。

我写了一个测试程序来启动。

    static void Main(string[] args)
{

for (int i = 0; i < 1000; i++)
{
Console.WriteLine(i);
}

object m = null;
string s = m.ToString();

}

我希望在控制台窗口中看到数字 0 - 999 滚动并通过重定向获得错误输出,但我在控制台窗口中看不到任何内容,除非没有任何重定向。

我还没有找到任何关于这个问题的问题。这是缺陷还是我忽略了什么?

最佳答案

我试过重现,但我做不到。这是我的代码,我在其中仅重定向错误,但我仍然能够在控制台窗口中看到输出:

public class Program
{
static void Main(string[] args)
{
ExecuteCommand(@"cmd.exe", @"/c C:\Users\*****\Documents\Test\ConsoleApp1.exe");
}

public static int ExecuteCommand(string exePath, string cmdText)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = exePath;
startInfo.Arguments = cmdText;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
process.StartInfo = startInfo;
process.Start();
process.BeginErrorReadLine();
process.WaitForExit();
return process.ExitCode;
}
}

这是我的输出:

enter image description here

我做的事情是否与您尝试过的不同?

关于c# - .NET System.Process : when you redirect StandardError, 控制台窗口没有收到任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51257335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com