Concurrency متوسط

افحص عمليات نظام التشغيل وأدِرها باستخدام 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 9 (سبتمبر 2017)

يوفر ProcessHandle معرّفات العملية PID ومعلومات العملية (الأمر والوسائط ووقت البدء واستخدام المعالج) وعلاقات الوالد/الطفل وتدمير العمليات. لا مزيد من الأجزاء الداخلية غير الموثّقة لـ Process.

مشاركة 𝕏 🦋 in