어떻게 제거하는 자바의 자식 프로세스할 때 내 Java 응용 프로그램이 종료/충돌?
-
06-07-2019 - |
문제
를 시작하려면 자식 프로세스에서 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));
제휴하지 않습니다 StackOverflow