1

プロセスの出力を文字列に読み込もうとしています。何らかの理由で、出力の途中にある 1 行が出力されているように見えます (つまり、画面に表示され、文字列には保存されません)。

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

コマンドラインからコマンドを実行すると、「アドレス: ...」の後に「権限のない回答:」が表示されます。

出力され、文字列の一部として保存されない理由を誰かが説明できますか? 私はおそらく明らかな何かを見逃していますが、私は困惑しています。

ありがとう

4

1 に答える 1

5

その行は、おそらく STDOUT ではなく STDERR になります。標準出力だけでなく、標準エラーもリダイレクトしてみてください。

process.StartInfo.RedirectStandardError = true;
于 2015-01-14T00:06:08.097 に答える