Dan*_*zar 19
进程管理和所有类似的操作都由操作系统完成.因此,JVM必须调用适当的系统调用才能销毁进程.显然,这将在操作系统之间变化.
在Linux上,我们有killsyscall来做 - 或者exit我们想要终止当前正在运行的进程.当然,JDK源中的本机方法是根据JVM将要运行的操作系统分开的.如前所述,Process有一种public void destroy()方法.在Linux的情况下,此方法由UNIXProcess.实现.该destroy()方法实现如下:
private static native void destroyProcess(int pid);
public void destroy() {
destroyProcess(pid);
}
Run Code Online (Sandbox Code Playgroud)
destroyProcess()反过来,本机方法定义UNIXProcess_md.c如下:
JNIEXPORT void JNICALL
Java_java_lang_UNIXProcess_destroyProcess(JNIEnv *env, jobject junk, jint pid)
{
kill(pid, SIGTERM);
}
Run Code Online (Sandbox Code Playgroud)
killLinux系统调用在哪里,其源代码在Linux内核中可用,更准确地说在文件中kernel/signal.c.它被宣布为SYSCALL_DEFINE2(kill, pid_t, pid, int, sig).
快乐阅读!:)
| 归档时间: |
|
| 查看次数: |
5804 次 |
| 最近记录: |