प्रक्रिया प्रबंधन और सभी तरह के आपरेशनों ओएस द्वारा किया जाता है। इसलिए, प्रक्रिया को नष्ट करने के लिए JVM को उचित सिस्टम कॉल को कॉल करना होगा। जाहिर है, ऑपरेटिंग सिस्टम के बीच अलग-अलग होगा।
लिनक्स पर, हमारे पास kill
सिस्कोल ऐसा करने के लिए है - या exit
यदि हम वर्तमान में चल रहे प्रक्रिया को समाप्त करना चाहते हैं। जेडीके स्रोतों में देशी विधियां निश्चित रूप से ऑपरेटिंग सिस्टम के अनुसार अलग होती हैं, जेवीएम चलने जा रहा है। जैसा कि पहले उल्लेख किया गया है, Process
में public void destroy()
विधि है। लिनक्स के मामले में, इस विधि को UNIXProcess
द्वारा कार्यान्वित किया गया है। destroy()
विधि इस तरह काफी कार्यान्वित किया जाता है:
private static native void destroyProcess(int pid);
public void destroy() {
destroyProcess(pid);
}
देशी विधि destroyProcess()
, बारी में, UNIXProcess_md.c
में परिभाषित किया गया है और इस तरह दिखता है:
JNIEXPORT void JNICALL
Java_java_lang_UNIXProcess_destroyProcess(JNIEnv *env, jobject junk, jint pid)
{
kill(pid, SIGTERM);
}
कहाँ kill
लिनक्स syscall, जिसका स्रोत है लिनक्स कर्नेल में उपलब्ध है, फाइल kernel/signal.c
में अधिक सटीक रूप से। इसे SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
के रूप में घोषित किया गया है।
हैप्पी रीडिंग! :)
स्रोत
2012-05-17 11:21:26
यह लगभग निश्चित रूप से 'मार (पिड, सिगरम)' कहता है। आपको क्यों लगता है कि आपको जानने की जरूरत है? – EJP