واجهة برمجة العمليات الحديثة
افحص عمليات نظام التشغيل وأدِرها باستخدام ProcessHandle.
مقارنة الكود
✕ Java 8
Process p = Runtime.getRuntime()
.exec("ls -la");
int code = p.waitFor();
// no way to get PID
// no easy process info
✓ Java 9+
ProcessHandle ph =
ProcessHandle.current();
long pid = ph.pid();
ph.info().command()
.ifPresent(IO::println);
ph.children().forEach(
c -> IO.println(c.pid()));
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
معلومات كاملة
الوصول إلى PID والأمر والوسائط ووقت البدء واستخدام المعالج.
شجرة العمليات
التنقل بين الوالد والأبناء والأحفاد.
المراقبة
onExit() يُرجع CompletableFuture للمراقبة غير المتزامنة.
الأسلوب القديم
Runtime.exec()
الأسلوب الحديث
ProcessHandle
منذ JDK
9
الصعوبة
متوسط
دعم JDK
واجهة برمجة العمليات الحديثة
متاح
متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)
كيف يعمل
يوفر ProcessHandle معرّفات العملية PID ومعلومات العملية (الأمر والوسائط ووقت البدء واستخدام المعالج) وعلاقات الوالد/الطفل وتدمير العمليات. لا مزيد من الأجزاء الداخلية غير الموثّقة لـ Process.
توثيق ذو صلة