2011-08-20 6 views
0

ProcessBuilder을 사용하여 일부 데이터를 파일 시스템에 기록하는 하위 프로세스를 생성합니다. 부모 프로세스가 예기치 않게 충돌하거나 죽을 수 있기 때문에 문제가 발생합니다. 예를 들어 내가 사용하는 경우에도 자식 프로세스가 멈 춥니 다. jps 부모 프로세스가 종료되었는지 확인한 다음 종료합니다. 스폰 된 자식 프로세스가 부모 프로세스가 종료되었는지 감지하고 종료하는 올바른 방법은 무엇입니까?정상적으로 Java 자식 프로세스가 생성되었습니다.

또한 인터넷에서 검색 한 결과 대부분의 솔루션은 Runtime.addShutdownHook()을 사용하지만 ProcessBuilder에는 제공되지 않습니다. 그것은 동등한 것을 가지고 있습니까?

답변

1

문제를 해결하기에 좋은 결과를 얻었습니다. 따라서 언급 한 Process 인스턴스와 Runtime.addShutdownHook(Thread) 메소드에 대한 참조를 사용할 수 있습니다.


List commands = new ArrayList(); 
commands.add("xeyes"); // launch this command 
ProcessBuilder pb = new ProcessBuilder(commands); 
final Process p = pb.start(); 
Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
    p.destroy(); 
    } 
}); 

Thread.sleep(2000); // sleep for some time 
0

내가 부모 프로세스가 정기적으로 하트 비트를 보낼 수 있었다 하트 비트 메커니즘을 구현 비슷한 상황에서 : 이것은 당신이 취할 필요 믿고 마지막 단계입니다. 그렇게하지 않으면 자식 프로세스가 스스로 종료됩니다.

관련 문제