2009-10-01 3 views
1

다음 .net 코드가 있으므로 jvm이 ShutdownHooks를 실행하도록 올바르게 중지하고 싶습니다. 유닉스 명 COMAND 검색된 등가 SIGTERM 보내지 않고 중지 JVM 강제) p.Kill와 프로세스 (막으려Gracefuly stop .net Java 프로세스가 시작했습니다.

System.Diagnostics.Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardError = true; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
p.StartInfo.WorkingDirectory = @"C:\test\"; 
p.StartInfo.FileName = @"C:\Program Files\Java\jre6u16\bin\java.exe"; 
p.StartInfo.Arguments = "-jar TheExecutable.jar"; 

. 또는 maeby Java 프로세스가 종료 된 후크가 실행되지 않기 때문에 뭔가 잘못하고 있습니다.

감사합니다.

답변

2

자바 코드를 제어 할 수있는 경우 파일 끝 부분과 같은 정상적인 상황을 stdin에서 감지하거나이 독성 알약을 stdin으로 감지하여이를 사용하여 (Java로) 지금 결정하십시오 종료 할 시간입니다.

그런 다음 Java 프로세스를 종료하려면 stdin에 필요한 작업을 수행하십시오. 폴링과 같은 파일을 찾고 부모 프로세스 또는 - 오히려 끔찍한 것을 see sun.misc.SignalHandlersum.misc.Signal

다른 옵션이 등록 -

또 다른 옵션은, 신호 처리기를 작성하는 것입니다.

+0

정말 유용한 답변입니다. 고마워요! –

+0

그건 그렇고, 왜이 특정한 경우에 우리는 리눅스에서 SIGTERM을 보내는 작업을 할 수 없는지 제발 설명해 주시겠습니까? –

관련 문제