어떻게 제거하는 자바의 자식 프로세스할 때 내 Java 응용 프로그램이 종료/충돌?

StackOverflow https://stackoverflow.com/questions/261125

문제

를 시작하려면 자식 프로세스에서 Java 다음과 같다:

final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);

지금 그것은 백그라운드에서 실행됩니다.모든 좋은 괜찮습니다.

내 프로그램드(그 아직 dev:-))자식 프로세스는 여전히 같다.어떻게 만들 수 있습니다 자동적으로 말할 때 부모 Java 프로세스가 죽?

도움이 된다면,내가 사용하고 Mac OS X10.5

도움이 되었습니까?

해결책

당신이 말했듯이, addShutdownHook 는 방법입니다.

그러나:

  • 실제이 없다는 보장이 종료 후크는 실행하는 경우 프로그램을 종료됩니다.사람을 죽일 수 있었는 Java 프로세스에서는 경우에 당신의 종료 훅이 실행되지 않습니다.(에서 말했듯이 그래서 질문)

  • 의 어떤 표준 라이브러리는 자신의 후크를 실행할 수 있습니다 전에 당신입니다.

  • 주의 교착 상태.

또 다른 가능성하는 것입 포장 java 프로그램에 서비스.

다른 팁

나는 일 그것은 자신이 이미 이다.추가 종료 후크,다음과 같다:

final String[] cmd = {"<childProcessName>"};
final Process process = Runtime.getRuntime().exec(cmd);
Runnable runnable = new Runnable() {
    public void run() {
        process.destroy();
    }
};
Runtime.getRuntime().addShutdownHook(new Thread(runnable));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top