Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java 9 में प्रोसेस API का उपयोग करके प्रोसेस को समाप्त/नष्ट कैसे करें?

प्रोसेस नष्ट करना

Java 9 में, Process API प्रोसेस के बारे में बहुत सारी जानकारी प्राप्त करने का एक आसान तरीका समर्थन करता है। ProcessHandle इंटरफेस नेटिव प्रोसेसेज की पहचान और नियंत्रण प्रदान कर सकता है और प्रोसेस लाइवनेस जांचने और प्रोसेसेज को नष्ट करने के लिए मेथड प्रदान करता है, जबकि ProcessHandle.Info इंटरफेस प्रोसेस का एक सूचना स्नैपशॉट दे सकता है। हमें ProcessHandle इंटरफेस के destroy() मेथड का उपयोग करके प्रोसेस को नष्ट करने की आवश्यकता है।

उदाहरण: प्रोसेस समाप्त करना

import java.io.File;
import java.io.IOException;
import java.util.Objects;

public class DestroyProcessTest {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("---------------------------");
        System.out.println("Destroy Process:");
        final String javaCmd = getJavaCmdFromParent();
        final String classpath = getClassPathFromParent();
        try {
            final Process process = new ProcessBuilder(javaCmd, "-cp", classpath, DestroyProcessTest.class.getName()).start();
            ProcessHandle processHandle = process.toHandle();
            printInfo(processHandle);
            destroyProcess(processHandle);
            Thread.sleep(1000);
            System.out.println("---------------------------");
            System.out.println("After destroying the process:");
            printInfo(processHandle);
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
    private static String getClassPathFromParent() { return System.getProperty("java.class.path", "./*"); }
    private static String getJavaCmdFromParent() { return Objects.isNull(System.getProperty("java.home")) ? "java" : String.format("%s%sbin%sjava", System.getProperty("java.home"), File.separator, File.separator); }
    private static void destroyProcess(ProcessHandle processHandle) throws IllegalStateException {
        System.out.println("Ready to destroy Process with id: " + processHandle.pid());
        processHandle.destroy();
    }
    private static void printInfo(ProcessHandle processHandle) {
        System.out.println("---------");
        System.out.println("Id: " + processHandle.pid());
        System.out.println("isAlive(): " + processHandle.isAlive());
        System.out.println("isSupportsNormalTermination(): " + processHandle.supportsNormalTermination());
        ProcessHandle.Info processInfo = processHandle.info();
        System.out.println("Info: " + processInfo.toString());
        System.out.println("Info arguments().isPresent(): " + processInfo.arguments().isPresent());
        System.out.println("Info command().isPresent(): " + processInfo.command().isPresent());
        System.out.println("Info totalCpuDuration().isPresent(): " + processInfo.totalCpuDuration().isPresent());
        System.out.println("Info user().isPresent(): " + processInfo.user().isPresent());
    }
}

आउटपुट

---------------------------
Destroy Process:
---------
Id: 4384
isAlive(): true
isSupportsNormalTermination(): false
Info: [user: Optional[Tutorialspoint\User], cmd: C:\Program Files\Java\jdk-9.0.4\bin\java.exe, startTime: Optional[2020-03-06T10:58:53.210Z], totalTime: Optional[PT0.046875S]]
...
Ready to destroy Process with id: 4384
---------------------------
After destroying the process:
---------
Id: 4384
isAlive(): false
isSupportsNormalTermination(): false
Info: [user: Optional[Tutorialspoint\User], startTime: Optional[2020-03-06T10:58:53.210Z], totalTime: Optional[PT0.109375S]]
...

destroy() मेथड प्रोसेस को सामान्य रूप से समाप्त करता है; destroyForcibly() बलपूर्वक समाप्ति के लिए भी उपलब्ध है।

  1. - Java 9 Process API: ProcessHandle.Info से प्रक्रिया स्नैपशॉट प्राप्त करें

    Java 9 ने Process API को महत्वपूर्ण रूप से बढ़ाया, जिसमें ProcessHandle और ProcessHandle.Info इंटरफेस पेश किए गए जो ऑपरेटिंग सिस्टम प्रक्रियाओं के बारे में विस्तृत जानकारी प्रदान करते हैं बिना JNI या बाहरी कमांड के। मुख्य इंटरफेस ProcessHandle: एक देशी प्रक्रिया की पहचान करता है और नियंत्रण प्

  1. जावा 9 में ProcessBuilder का उपयोग करके प्रोसेस कैसे बनाएं? जावा 9 में ProcessBuilder का उपयोग करके प्रोसेस कैसे बनाएं?

    जावा 9  ने ProcessHandle  इंटरफेस को Process API में जोड़ा है ताकि Process क्लास को बढ़ाया जा सके। ProcessHandle इंटरफेस का एक इंस्टेंस एक स्थानीय प्रक्रिया की पहचान करता है जो हमें प्रक्रिया स्थिति  क्वेरी करने और प्रक्रियाओं को प्रबंधित करने की अनुमति देता है, और ProcessHandle.Info

  1. - Java में स्ट्रीमिंग API का उपयोग करके JSON स्ट्रिंग को कैसे पार्स करें?

    स्ट्रीमिंग API में एक महत्वपूर्ण इंटरफेस JsonParser होता है और यह इंटरफेस JSON को स्ट्रीमिंग तरीके से पार्स करने के तरीके प्रदान करता है और JSON डेटा के लिए फॉरवर्ड, रीड-ओनली एक्सेस प्रदान करता है। Json क्लास में इनपुट स्रोतों से पार्सर बनाने के तरीके होते हैं। हम Json क्लास के स्थैतिक createParser(