Süreç yönetimi ve tüm benzeri işlemler işletim sistemi tarafından yapılmaktadır. Bu nedenle, JVM bir işlemi yok etmek için uygun sistem çağrısını çağırmalıdır. Bu, açıkça, işletim sistemleri arasında değişecektir.
Linux'ta bunu yapmak için kill
sistem çağrısı var - veya şu anda çalışan işlemi sonlandırmak istiyorsak exit
. JDK kaynaklarındaki yerel yöntemler elbette, JVM'nin çalışacağı işletim sistemine göre ayrılır. Daha önce belirtildiği gibi, Process
, bir public void destroy()
yöntemine sahiptir. Linux durumunda, bu yöntem UNIXProcess
tarafından uygulanır. destroy()
yöntem hemen hemen böyle uygulanır:
private static native void destroyProcess(int pid);
public void destroy() {
destroyProcess(pid);
}
yerli yöntem destroyProcess()
, sırayla, UNIXProcess_md.c
tanımlanır ve şöyle görünür: kill
kaynak Linux sistem çağrısını olduğu
JNIEXPORT void JNICALL
Java_java_lang_UNIXProcess_destroyProcess(JNIEnv *env, jobject junk, jint pid)
{
kill(pid, SIGTERM);
}
Linux çekirdeğinde, daha doğrusu kernel/signal.c
numaralı dosyada bulunur. SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
olarak beyan edilmiştir.
Mutlu okuma!
Neredeyse kesinlikle "kill (pid, SIGTERM)" yi çağırır. Neden bilmen gerektiğini düşünüyorsun? – EJP