C#之重定向輸入輸出


當我們寫完程序,想要在另一個平台上跑我們所寫的程序的時候,就需要用到重定向輸入輸出。

重定向有兩中方式,即同步和異步。

下面來講講同步

代碼:

            Process process = new Process();
            process.StartInfo.FileName = "XX.exe";//這兒放你的exe文件的路徑
            process.StartInfo.UseShellExecute = false;   // 是否使用外殼程序 
            process.StartInfo.CreateNoWindow = true;   //是否在新窗口中啟動該進程的值 
            process.StartInfo.RedirectStandardInput = true;  // 重定向輸入流 
            process.StartInfo.RedirectStandardOutput= true;  //重定向輸出流 
            process.StartInfo.RedirectStandardError= true;  //重定向錯誤流 
            process.Start();
            process.StandardInput.WriteLine(textBox1.Text);//讀取textBox1的文本內容。
            process.StandardInput.WriteLine(textBox2.Text);
            textBox3.Text = process.StandardOutput.ReadLine();//將輸出結果放在textBox3中

            process.WaitForExit();
            process.Close();

 

正如代碼中一樣,重定向是必須將重定向的輸入輸出和錯誤流改成true,進程才可進行重定向的輸入輸出,改完之后,開始進程,就可以運行對應的exe文件了。

系統會自動將你在平台的輸入放入你的運行的exe文件中,並會將結果傳到你指定的位置。

Read、ReadLine 和 ReadToEnd等方法對進程的輸出流執行同步讀取操作。這些同步讀取操作只有在關聯的 Process 寫入其StandardOutput 流或關閉該流后才能完成。

同步讀取操作在讀取 StandardOutput 流的調用方及寫入該流中的子進程之間引入一個依賴項。這些依賴項可能導致產生死鎖情況。調用方讀取子進程的重定向流時依賴於該子進程。調用方將等待讀取操作,直到子進程寫入流或關閉流為止。子進程寫入足夠多的數據以填充重定向流的時間依賴於父進程。子進程將等待下一次寫操作,直到父進程讀取了全部流或關閉該流為止。當調用方和子進程相互等待對方完成操作時,就會產生死鎖情況,使雙方都無法繼續執行操作。可以通過計算調用方和子進程之間的依賴項從而避免出現死鎖情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM