进程管理和所有类似操作均由OS完成。因此,JVM必须调用适当的系统调用才能破坏进程。显然,这将在操作系统之间有所不同。
在Linux上,我们可以通过
killsyscall来执行此操作-或
exit是否要终止当前正在运行的进程。当然,JDK源代码中的本机方法是根据要运行JVM的操作系统分开的。如前所述,
Process有一种
publicvoiddestroy()方法。对于Linux,此方法由实现
UNIXProcess。该
destroy()方法的实现非常像这样:
private static native void destroyProcess(int pid);public void destroy() { destroyProcess(pid);}destroyProcess()反过来,本机方法在中定义,
UNIXProcess_md.c如下所示:
JNIEXPORT void JNICALLJava_java_lang_UNIXProcess_destroyProcess(JNIEnv *env, jobject junk, jint pid){ kill(pid, SIGTERM);}killLinux syscall
在哪里,其源可在Linux内核中找到,更确切地说在file中
kernel/signal.c。声明为
SYSCALL_DEFINE2(kill,pid_t, pid, int, sig)。
祝您阅读愉快!:)



