Java-Linux的Process.destroy()源代码
我需要检查的代码,Process.destroy()
以查看它kill
在Linux上到底如何子进程。
有谁知道该方法的作用或链接到其来源?我检查了jdk
源代码,Process
它只是一个抽象类,并且该destroy
方法尚未实现,似乎没有链接到extends
或的任何子类implements
Process
。任何帮助将不胜感激。
谢谢,
回答:
进程管理和所有类似操作均由OS完成。因此,JVM必须调用适当的系统调用才能破坏进程。显然,这将在操作系统之间有所不同。
在Linux上,我们可以通过kill
syscall来执行此操作-或exit
是否要终止当前正在运行的进程。当然,JDK源代码中的本机方法是根据要运行JVM的操作系统分开的。如前所述,Process
有一种public
void
destroy()方法。对于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);
}
kill
Linux syscall
在哪里,其源可在Linux内核中找到,更确切地说在file中kernel/signal.c
。声明为SYSCALL_DEFINE2(kill,
pid_t, pid, int, sig)。
祝您阅读愉快!:)
以上是 Java-Linux的Process.destroy()源代码 的全部内容, 来源链接: utcz.com/qa/398620.html