কম্পিউটার

জাভা 9 এ প্রসেস এপিআই ব্যবহার করে একটি প্রক্রিয়া কীভাবে শেষ/ধ্বংস করবেন?


জাভা 9-এ, প্রসেস API একটি প্রক্রিয়া সম্পর্কে অনেক তথ্য পেতে একটি সহজ উপায় সমর্থন করে। প্রসেসহ্যান্ডেল ইন্টারফেস শনাক্ত করতে পারে এবং নেটিভ প্রসেস এবং পদ্ধতির নিয়ন্ত্রণ প্রদান করতে পারে প্রসেসের সজীবতা পরীক্ষা করতে এবং প্রসেসগুলিকে ধ্বংস করতে পারে যেখানে ProcessHandle.Info ইন্টারফেস একটি প্রক্রিয়ার একটি তথ্য স্ন্যাপশট দিতে পারে। আমাদের 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]]
Info arguments().isPresent(): false
Info command().isPresent(): true
Info totalCpuDuration().isPresent(): true
Info user().isPresent(): true
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]]
Info arguments().isPresent(): false
Info command().isPresent(): false
Info totalCpuDuration().isPresent(): true
Info user().isPresent(): true

  1. জাভা 9 এ প্রসেস এপিআই সম্পর্কে তথ্যের একটি স্ন্যাপশট কীভাবে পাবেন?

  2. কিভাবে জাভা 9 এ ProcessBuilder ব্যবহার করে একটি প্রক্রিয়া তৈরি করবেন?

  3. জাভাতে JSON-lib API ব্যবহার করে কীভাবে একটি সংগ্রহকে JSON অ্যারেতে রূপান্তর করবেন?

  4. জাভাতে স্ট্রিমিং API ব্যবহার করে একটি JSON স্ট্রিং কীভাবে পার্স করবেন?