ProcessHandle ইন্টারফেস জাভা ৯-এ প্রবর্তিত। এটি আমাদের অ্যাকশন পারফর্ম করতে এবং একটি প্রসেসের স্টেট চেক করতে দেয় যা उससे সম্পর্কিত। এই ইন্টারফেস প্রসেসের নেটিভ প্রসেস আইডি (pid), স্টার্ট টাইম, অ্যাকিউমুলেটেড CPU টাইম, আর্গুমেন্টস, কমান্ড, ইউজার, পেরেন্ট প্রসেস, এবং ডিসেন্ডেন্টস প্রদান করে।
ProcessHandle ইন্টারফেসের পারফর্ম করা অ্যাকশনসমূহ
- একটি প্রসেস সম্পর্কে আরও ইনফরমেশন ধারণকারী ProcessHandle.Info রিটার্ন করে
- একটি প্রসেসের Pid
- এটি alive কিনা
- একটি প্রসেসের ডায়রেক্ট চাইল্ড্রেনের স্ন্যাপশট রিট্রিভ করে
- একটি প্রসেসের সব ডিসেন্ডেন্টের স্ন্যাপশট রিট্রিভ করে
- বর্তমানে রান হচ্ছে সব প্রসেসের স্ন্যাপশট রিট্রিভ করে
- প্রসেসকে ডিস্ট্রয় করার অনুমতি দেয়
- প্রগ্রেস টার্মিনেট হওয়ার সময় ProcessHandle সহ CompletableFuture রিটার্ন করে
ProcessHandle.Info
ProcessHandle.Info একটি প্রসেসের স্ন্যাপশট থেকে ইনফরমেশন ধারণ করে:
- প্রসেসের কমান্ড
- প্রসেসের আর্গুমেন্টস
- প্রসেসের কমান্ড-লাইন
- প্রসেসের স্টার্ট টাইম
- প্রসেস দ্বারা ব্যবহৃত CPU টাইম
- প্রসেসের ইউজার
উদাহরণ: করেন্ট প্রসেস হ্যান্ডেলের PID ও isAlive() চেক
import java.util.Optional;
public class ProcessHandleTest {
public static void main(String args[]) {
long pid = ProcessHandle.current().pid();
ProcessHandle currentProcess = ProcessHandle.current();
System.out.println("PID: " + currentProcess.pid());
Optional<ProcessHandle> processHandle = ProcessHandle.of(pid);
boolean isAlive = processHandle.isPresent() && processHandle.get().isAlive();
System.out.println(isAlive);
}
}
আউটপুট
PID: 6484 true