【发布时间】:2020-02-13 16:22:56
【问题描述】:
我有一个启动另一个应用程序的应用程序。这个其他应用程序在控制台中打印了几行,但没有人需要这个输出,它打印出我自己的输出。如何防止此其他应用程序将其内容打印到我的控制台中?
我尝试在true 和false 上使用ProcessStartInfo.UseShellExecutive 运行,还尝试在开始之前将控制台输出更改为 MemoryStream,但由于我需要控制台,我不得不将输出更改回来,它看起来像另一个应用程序他们的意见也变回来了。
Process serverprocess = new Process();
serverprocess.StartInfo.FileName = Path.GetFileName(serverpath);
serverprocess.StartInfo.Arguments = launch;
serverprocess.StartInfo.UseShellExecute = false;
serverprocess.StartInfo.RedirectStandardOutput = true;
serverprocess.Start();
【问题讨论】:
-
您是如何将子进程标准输出重定向到内存流的?至少显示那部分代码。重定向(类似
>nul)也可以工作。 -
由你添加.. :)
-
这是否适用:stackoverflow.com/a/3642517/1132334(将
RedirectStandardOutput设置为true,只是不将任何处理程序附加到OutputDataReceived)? -
我不确定我是否理解正确,但我添加了重定向并且没有向 OutputDataRecieved 添加任何内容,但它仍然显示在我的控制台中:((将帖子更改为当前代码)跨度>
-
也许子进程写入stderr而不是stdout。也重定向错误输出,有一个单独的属性。相关:stackoverflow.com/q/29967590/1132334