The referenced question discusses how to handle the *current* process receiving certain signals.
The original question was how to portably send signals to *other* processes via the Process abstraction. The comment was that terminate process sends a kill 9 signal which cannot be caught by the target process, and a separate function was desired that would result in shutdown hooks being called. Cheers, Jonathan This message was sent from my mobile device. Please forgive my typographical errors and brevity. On Mar 4, 2014 6:52 AM, "Krystal Mok" <[email protected]> wrote: > Hi Nicolas, > > Looks like a well discussed question. On Posix systems, SIGTERM should work > for you. That's the default signal sent by the 'kill' command on Linux. > e.g. please take a look here: > > http://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill-signal-in-java > > - Kris > > > On Tue, Mar 4, 2014 at 2:45 AM, LE PICARD NICOLAS > <[email protected]>wrote: > > > Hello everyone ! > > > > I looked for the answer in this list and did not find anything relevant. > > > > I don't know it it's possible to close a Process et call shutdown hooks > > automatically. I looked into the code and found it was not possible (in > > jdk7). > > When we call destroy() on a Process, it will call terminateProcess of > > ProcessImpl class. > > This link shows that a TerminateProcess < kills > the process and WH_CBT > > hooks are NOT called. > > > > > http://msdn.microsoft.com/en-us/library/windows/desktop/ms686722(v=vs.85).aspx > > Calling exitProcess (instead of TeminateProcess) seems to be dangerous > ... > > but I don't understand why (ok, dlls could be locked, but when you do a > > CTRL +C it calls an exitProcess... so what's the problem ???) > > > > So I ask < how can we close a process, with the hooks called ? >. My > > knowledge is way smaller than people on openjdk... so I hope someone has > an > > answer or a workaround. > > > > Byte the way, I looked for sending signals (SIGINT for Windows, SIGKILL > > for linux etc) to close a process. > > Maybe I'm wrong, but a solution could be to add to ProcessImpl_md.c : > > > > #include <signal.h> > > > > > > > > JNIEXPORT jboolean JNICALL > > > > Java_java_lang_ProcessImpl_CloseHandleWithHooks(JNIEnv *env, jclass > > ignored, jlong handle) > > > > { > > > > raise(SIGINT) ; > > > > } > > > > I think,it will call an ExitProcess so ... dangerous or not ? > > Of course, we have to add also a function in ProcessImpl and make call > > available from Process through an abstract function like < close() > > > > > > > Any clever thoughts on this subject (I'm sure it is a common problem...) > ? > > Thanks :) > > > > > > Regards. > > > > Nicolas Le Picard > > > > >
