我與來自System.Diagnostics
的Process
類工作,這裏是我的代碼:CSHARP的cygwin不能殺mintty.exe
public void doMain() {
Process cygwin = new Process();
cygwin.StartInfo.FileName = "C:\\cygwin64\\bin\\mintty.exe";
cygwin.Start();
cygwin.Refresh();
Thread.Sleep(1000);
cygwin.Kill();
cygwin.WaitForExit();
}
通常,這應該運行mintty.exe
過程,然後等待1秒鐘,然後殺死進程,但它給我的錯誤,它已被關閉殺手電話之前。
上線cygwin.Kill();
調用此異常情況:
「System.InvalidOperationException」類型的未處理的異常出現在System.dll中
其他信息:無法處理請求,因爲該進程已退出。
爲什麼會發生這種情況?
如果我將替換爲"C:\\cygwin64\\bin\\bash.exe"
,例外情況就會消失!
問題是什麼?
如果您從'文件資源管理器'而不是代碼運行'mintty.exe',它會立即退出嗎?我有一種感覺,'bash.exe'提供給你一個命令行實用程序,但是'mintty'沒有這樣的東西。 –
@JayGould不!爲什麼它應該立即退出?我讓我的代碼等待了1000毫秒,然後終止了這個過程。那麼'mintty.exe'就像是'bash.exe'的包裝器。 – newpeople
首先,問自己在執行kill方法期間,錯誤/異常意味着什麼。當我讀到它時,殺死失敗了,因爲你試圖殺死的進程已經退出。在下面閱讀我的答案。啓動方法創建進程#p,分叉創建子進程#c。進程#p退出。進程#c打開薄荷窗口。您嘗試殺死進程#p,但它已被殺死/退出。 cygwin對象中的進程號是什麼?什麼是mintty的進程號(提示:使用任務管理器)? –