mintty.exe 죽일 수 없습니다CSHARP의 Cygwin에서 내가 <code>System.Diagnostics</code>에서 <code>Process</code> 클래스로 작업하고 여기에 내 코드가되었습니다
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
프로세스를 실행 한 후 일초를 기다린 후 그 프로세스를 종료해야하지만, kill 호출 전에 닫혔다는 오류를 내게줍니다.
처리되지 않은 'System.InvalidOperationException'형식의 예외가 추가 정보 System.dll을
는 프로세스가 종료 된 처리하지 요청을 할 수 있기 때문이다.
발생 :이 예외가 발생 라인cygwin.Kill();
전화에
왜 이런 일이 발생합니까?!
"C:\\cygwin64\\bin\\mintty.exe"
을 "C:\\cygwin64\\bin\\bash.exe"
으로 대체하면 예외가 사라집니다!
무엇이 문제입니까?
코드에서가 아니라 '파일 탐색기'에서'mintty.exe'를 실행하면 즉시 종료합니까? 'bash.exe'는로드 할 때 커맨드 라인 유틸리티를 제공하지만'mintty'에는 그런 일이 없습니다. –
@JayGould 아니요! 왜 즉시 종료해야합니까? 나는'1000' 밀리 초를 기다린 다음 프로세스를 죽일 코드를 만들었습니다. 음,'mintty.exe'는 어떻게 든 'bash.exe'에 대한 래퍼와 같습니다. – newpeople
먼저, kill 메소드 실행 중에 오류/예외가 의미하는 바를 자문 해보십시오. 내가 읽었을 때, 당신이 죽이려고하는 프로세스가 이미 종료되었으므로 kill은 실패합니다. 아래 내 대답 읽기. 시작 프로세스는 자식 프로세스 #c를 생성하기 위해 fork 프로세스를 만듭니다. 프로세스 #p가 종료됩니다. 프로세스 #c는 민트 티 윈도우를 엽니 다. 당신은 프로세스 #p를 죽이려하지만 이미 죽거나 빠져 나왔다. cygwin 객체의 프로세스 번호는 무엇입니까? mintty의 프로세스 번호는 무엇입니까 (힌트 : 작업 관리자 사용)? –