저는 방금 시작한 모든 프로세스가 JVM이 종료 될 때 죽어 가고 있지 않다는 것을 깨달았습니다. 내가 Process
을 종료하는 방법이 있습니까? File.deleteOnExit()
과 같은 종류의 JVM이 있습니까?종료 할 때 JVM을 시작한 프로세스를 종료시킬 수 있습니까?
답변
종료하기 전에 각 Process
에 .waitFor()
메서드를 호출해야합니다. 당신은뿐만 아니라 당신이 원하는만큼 그 과정을 제어 할 수없는 경우
, 당신은 Runtime.addShutdownHook()
을 사용할 수
final Process process = startNewProcess();
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
process.waitFor();
}
}));
난 정말하지만, 가능하면 후자의 솔루션을 사용하지 않는 것이 좋습니다. JVM이 자체를 지울 기회가 없으면 프로세스가 강제로 종료되면 계속 실행됩니다.
그래서'waitFor()'는 JVM 종료 프로세스를 죽일 것입니까? 나는 이미'waitFor()'를 실행하고 있지만 아마도 IO 때문에 호출되지 않을 수도 있습니다. 조사 할게. –
'waitFor()'는 프로세스가 끝날 때까지 실행중인 쓰레드를 차단합니다. 나는 당신이 당신의 정상적인 흐름의 끝에 그것을 두어야한다고 말하고 있습니다. 그렇지 않으면 내 대안 솔루션을 사용할 수 있습니다. –
Ctrl + C와 같이 프로세스에 신호를 보낼 수 있습니까? –
실행중인 모든 프로세스의 목록을 유지 한 다음 Process.destroy()를 사용하여 언급 한 Platinum Azure와 같은 종료 훅 내부에서 프로세스를 종료 할 수 있습니다.
또한 프로세스가 완료되면 목록을 정리해야합니다. 이미 process.waitFor()를 호출하는 코드가 있으면 목록을 정리할 수 있습니다.
destroy 메소드는 프로세스를 강제 종료하여 수행중인 작업을 손상시킬 수 있으므로 사용시주의해야합니다.
다른 프로세스를 제어하는 경우 프로세스를 종료하도록 신호를 보내고 프로세스가 완료 될 때까지 기다린 다음 destroy를 호출하는 것이 좋습니다.
- 1. Java JVM을 종료 할 수 없습니다.
- 2. 서비스의 하위 프로세스를 종료 할 수 있습니까?
- 3. 프로세스를 시작한 후에 프로세스가 상승 할 수 있습니까?
- 4. 컴퓨터를 종료 할 때 프로세스를 취소하는 방법?
- 5. Android 앱이 시작한 통화를 종료 할 수 있습니까?
- 6. 출력이 리디렉션 될 때 하위 프로세스를 종료 할 수 없습니다.
- 7. AuthorizationExecuteWithPrivileges로 시작한 후 프로세스 종료
- 8. Windows에서 Python을 사용하면 어떻게 프로세스를 종료 할 수 있습니까?
- 9. C# 어떻게 시작 프로세스를 종료 할 수 있습니까?
- 10. MFC 응용 프로그램을 어떻게 종료시킬 수 있습니까?
- 11. 작업 관리자에서 IE 프로세스를 종료 할 때 localStorage를 지우십시오.
- 12. 저장 중에 최대 절전 모드를 종료 할 수 있습니까?
- 13. catch 할 때 JVM을 종료해야합니까? InterruptedException
- 14. 핸들을 가져 와서 프로세스를 시작한 콘솔에 씁니다.
- 15. JMX를 통해 프로그래밍 방식으로 Java 프로세스를 닫을 수 있습니까?
- 16. 프로세스를 시작한 후 모니터하기 위해 이벤트를 발생
- 17. 임의의 프로세스를 기다렸다가 Linux에서 종료 코드를 얻습니다.
- 18. Powershell에서 중단 된 프로세스를 종료 할 수있는 방법이 있습니까?
- 19. Process.destroy()를 사용하여 프로세스를 종료 할 수 없습니다.
- 20. 어떻게 서버 프로세스를 식별 할 수 있습니까?
- 21. ColdFusion에서 실행중인 프로세스를 종료 하시겠습니까?
- 22. 다른 프로세스가 WMI를 통해 시작되는 프로세스를 모니터링 할 수 있습니까?
- 23. PHP 스크립트가 다른 PHP 스크립트를 시작하고 종료 할 수 있습니까?
- 24. 자식 프로세스를 종료 할 수 있도록 DB 리소스를 공유하지 않고 PHP 프로세스를 생성 및 분리 하시겠습니까?
- 25. iPhone을 종료 할 때 이벤트를 발생시킬 수 있습니까?
- 26. C 프로그램을 종료 할 때 어떻게 파일을 만들 수 있습니까?
- 27. 프로그램을 종료 할 때 Phonegap이 자바 스크립트를 실행할 수 있습니까?
- 28. curl_easy_perform을 사용할 때 어떻게 종료 할 수 있습니까?
- 29. 부모는 모든 자식 프로세스가 종료 된 후 SIGINT를 수신 할 때 종료 할 수 있습니까?
- 30. WebSphere : jvm을 재시작하지 않고 트랜잭션 설정을 다시로드 할 수 있습니까?
대부분의 경우 JVM을 종료하고 프로세스를 종료하는 것은 서로 동의어입니다. 자신의 경우에 정확히 무엇이 일어나는지 (또는 적어도 증상이 무엇인지) 조금 더 자세하게 설명해 주시겠습니까? – NPE
'Runtime.addShutdownHook' 그리고 무엇이든 할 수 있습니다. – bestsss