簡體   English   中英

cmd.exe進程永遠不會完成

[英]cmd.exe process never completes

我有以下代碼。

ProcessStartInfo si = new ProcessStartInfo("cmd.exe");
si.RedirectStandardInput = true;
si.RedirectStandardOutput = true;
si.UseShellExecute = false;
si.WindowStyle = ProcessWindowStyle.Hidden;
si.CreateNoWindow = true;
Process p = Process.Start(si);
p.StandardInput.Write("ipconfig");
p.StandardInput.Write("exit");
string consoleOutput = p.StandardOutput.ReadToEnd();
string dir="here";

執行到達“ string consoleOutput”,但從未到達“ string dir”,即代碼在讀取StandardOutput時卡住了。 如果有任何區別,可以從控制台應用程序中運行它。

您必須通過關閉流來顯式完成對標准輸入的寫入。 請參閱Microsoft的示例

綜上所述:

        p.StandardInput.Write("exit");
        p.StandardInput.Close(); // <-- You need this
        string consoleOutput = p.StandardOutput.ReadToEnd();

編輯:在Visual Studio中測試。

順便說一句 ,您想使用WriteLine()而不是Write()

使用WriteLine而不是Write來寫一個帶有最后換行符的字符串。 (您可能還必須調用Flush() ,但我不確定)。 另一個答案說, Close流不會有什么壞處。

是的,您不需要cmd.exe ,可以直接啟動ipconfig (如@Petesh在評論中所建議)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM