প্রসেস হ্যান্ডলিং ক্লাস এবং সম্পর্কিত API জাভা ৯-এ প্রবর্তিত হয়েছে। আমরা ProcessHandle ইন্টারফেস এবং সম্পর্কিত মেথড ব্যবহার করে pid এবং অন্যান্য সম্পর্কিত প্রসেসের ইনফরমেশন পেতে পারি। আমাদের একটি প্রসেসের সব চাইল্ড পেতে হলে java.lang.ProcessHandle.children() মেথড ব্যবহার করতে হয়। এই মেথড একটি স্ট্রিম রিটার্ন করে, সাধারণত একটি প্রসেস যার কোনো চাইল্ড নেই।
উদাহরণ: প্রথম প্রসেস পাওয়া এবং এর চাইল্ড্রেনের প্রসেস ইনফরমেশন রিট্রিভ
import java.util.stream.Stream;
import java.util.Optional;
public class ChilderenProcessTest {
public static void main(String args[]) throws InterruptedException {
System.out.println("---------------------------");
System.out.println("Children Processes:");
Optional<ProcessHandle> processHandle = ProcessHandle.allProcesses().findFirst();
processHandle.ifPresent(proc -> proc.children().forEach(child -> System.out.println("PID: [ " + child.pid() + " ], Cmd: [ " + child.info().command() + " ]")));
}
}
আউটপুট (আংশিক)
--------------------------- Children Processes: PID: [ 0 ], Cmd: [ Optional.empty ] PID: [ 4 ], Cmd: [ Optional.empty ] PID: [ 424 ], Cmd: [ Optional.empty ] PID: [ 504 ], Cmd: [ Optional.empty ] PID: [ 560 ], Cmd: [ Optional.empty ] PID: [ 444 ], Cmd: [ Optional.empty ] PID: [ 1236 ], Cmd: [ Optional.empty ] PID: [ 1288 ], Cmd: [ Optional.empty ] PID: [ 1408 ], Cmd: [ Optional.empty ] PID: [ 1424 ], Cmd: [ Optional.empty ] PID: [ 1452 ], Cmd: [ Optional.empty ] PID: [ 1468 ], Cmd: [ Optional.empty ] PID: [ 5412 ], Cmd: [ Optional[C:\WINDOWS\System32\taskhostex.exe] ] PID: [ 3760 ], Cmd: [ Optional[C:\Program Files\Synaptics\SynTP\SynTPEnh.exe] ] PID: [ 5216 ], Cmd: [ Optional[C:\WINDOWS\explorer.exe] ] ... (অন্যান্য চাইল্ড প্রসেস)