2016-09-17 5 views
2

바람둥이 응용 프로그램을 통해 배치 파일을 호출하려고합니다. 일괄 처리는 제대로 실행되지만 일괄 처리의 timeout 명령은 일괄 처리를 일시 중지하지 않습니다. 일괄 처리를 직접 실행하면 시간 초과로 인해 프로세스가 예상대로 일시 중지됩니다.배치 파일에서 timeout 명령이 작동하지 않습니다.

배치를 다음과 같이 호출합니다. Runtime.getRuntime(). exec ("test.bat");

+0

**/NOBREAK ** 옵션을 사용하여 ** TIMEOUT **을 실행 했습니까? 어떤 종류의 지속적인 상호 작용이 효과적으로 키를 누르는 경우, 이것은 배제됩니다. – Compo

답변

8

Runtime.getRuntime().exec()으로 전화를 걸면 시작된 프로세스의 입력 및 출력 스트림이 리디렉션됩니다. 이 프로세스에서 시작되는 timeout은 동일한 핸들을 상속합니다.

문제는 timeouttries to get access to the console입니다. 리디렉션 때문에 문제가 될 수 있습니다.

당신은 콘솔 입력 스트림 리디렉션

<nul timeout /t 10 

, timeout 실패에서 실행이 동작을 테스트 할 수 있습니다. timeout이 실패하면

한 가지 해결 방법은

(timeout /t 10 || >nul ping -n 11 localhost) 2>nul 

수하는 ping 명령은 대기를 강제로 실행됩니다.

관련 문제