Process 클래스를 사용하여 exe를 실행하고 있습니다.내 프로세스가 입력을 기다리고 있습니까?
exe는 내가 제어하지 않는 타사 콘솔 응용 프로그램입니다.
프로세스가 명령 줄에서 입력을 기다리고 있는지 여부를 알고 싶습니다.
차이가 있다면 입력 대기 중일 때 응용 프로그램을 종료하려고합니다.
프로그램에서 출력을 기다리는 동안 적절한 이벤트가 있지만 프로세스가 입력을 참을성있게 기다리고있을 때 비슷한 이벤트가 표시되지 않습니다.
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "myapp.exe";
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
process.StartInfo = info;
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
프로세스가 입력 대기 중임을 어떻게 감지합니까? (시작을 호출 한 후 그 ... 당신이
process.StandardInput.Close();
에 시도 할 수 실패
foreach(ProcessThread thread in process.Threads)
if (thread.ThreadState == ThreadState.Wait
&& thread.WaitReason == ThreadWaitReason.UserRequest)
process.Kill();
: 제 3 자 프로세스가 정확히 폴링의 스레드 '상태를 시도 할 수 무엇을하고 있는지에 따라
내 관심사가 당신의 문제가됩니다. GUI 응용 프로그램 (내 질문 참조)에서 모달 루프를 감지하기위한 몇 가지 단점을 만들었지 만 콘솔 응용 프로그램에 대해서는 아직까지 좋은 해결책을 찾지 못했습니다. – jdehaan