2012-11-28 4 views
3

Apache Commons-Exec을 사용하여 프로그램을 성공적으로 시작할 수 있지만 프로그램을 시작한 후 시작 프로그램이 일시 중지되었습니다.프로그램을 시작하고 아파치 commons-exec를 사용하여 즉시 종료하는 방법은 무엇입니까?

프로그램을 시작하고 즉시 종료하여 다음 실행을 차단하지 않는 방법을 묻습니다.

DefaultExecutor executor = new DefaultExecutor(); 
executor.execute("cmd /c start C:\\Users\\xx\\program.exe"); 

나는 Win7 64 비트를 사용 중입니다. 당신이 DefaultExecuteResultHandler를 사용할 필요가 같은

감사

답변

3

documentation에 따르면, execute(CommandLine)은 동기 실행을 시작합니다. 즉, 호출 스레드를 차단합니다. 아마도 비동기 실행을 원하므로 execute(CommandLine command, ExecuteResultHandler handler)을 사용하십시오. 예를 들어,

DefaultExecutor executor = new DefaultExecutor(); 
executor.execute(new CommadLine("cmd /c start C:\\Users\\xx\\program.exe"), 
       new DefaultExecuteResultHandler()); 
2

는 소리.

자세한 내용은 tutorial (아래)를 참조하십시오.

+1

잘 내가 3 초 동안 워치 독 설정과 함께 아파치 튜토리얼을 수정했습니다. 프로그램은 10 초 후에 실행을 멈출 수있는 스레드 인 다른 Java 응용 프로그램을 실행합니다. 문제는 하위 프로세스가 10 초 안에 종료 될 때까지 부모가 닫히지 않는다는 것입니다. 감시견은 작동하지 않습니다. 부모 프로그램은 비동기 적입니다. 더 이상의 도움이 필요합니다.? 감사. – simaremare

+0

'* .sh' 파일을 실행하려고 할 때 리눅스에서 동일한 동작을 보게됩니다 (첫번째 줄은'#!/bin/sh'입니다). Watchdog은 시간 초과 후이 프로세스를 중지하지 않습니다! :( – djxak

관련 문제