c# - 在C#中,无法隐藏进程的每一行

我正在尝试将过程的输出读取为字符串。由于某种原因,它看起来像是输出中间的一行似乎已输出(即,它显示在屏幕上,而不保存到字符串中)。

string strOutput = "";
Process process = new Process();

process.StartInfo.FileName = "nslookup";
process.StartInfo.Arguments = "-type=mx uic.edu";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();

strOutput = process.StandardOutput.ReadToEnd();

process.WaitForExit();

Console.WriteLine("xxxxxxxxxxxxxxxxxxx");
Console.WriteLine(strOutput);
Console.WriteLine("yyyyyyyyyyyyyyyyyyy");


我得到的输出看起来像这样:

Non-Authoritative answer:
xxxxxxxxxxxxxxxxxxxx
Server: aaa.myserver.com
Address: 111.222.111.222

uic.edu MX preference = 10, mail exchanger - ...
...
yyyyyyyyyyyyyyyyyyyy


当我通过命令行运行命令时,“地址:...”后面会出现“非权威性答案:”

有人可以解释为什么输出而不是将其存储为字符串的一部分吗?我可能缺少明显的东西,但是我感到困惑。

谢谢

最佳答案

那条线可能是去STDERR而不是STDOUT。尝试重定向标准错误以及标准输出。

process.StartInfo.RedirectStandardError = true;

本文翻译自 https://stackoverflow.com/questions/27933737/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# redirectstandardoutput nslookup


相关文章:

c# - 是否有任何事件告诉我某个进程正在等待输入?

c - 如何在C中测量DNS查找时间

java - DNS查询使用Java中的DnsContextFactory冻结

c# - 为什么一个查询有效,而另一个无效?

c# - 从控制台应用程序(C#/ WinForms)发送输入/获取输出

c# - 将数据传递给startup.cs

java - 如果您已经重定向了标准输出,是否可以访问控制台?

go - 为什么golang Lookup ***函数无法提供服务器参数?

c# - 用逗号格式化小数,保留尾随零

c# - 断点当前不会被命中,cshtml