GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan id subproses di Jawa

Saya mencoba (dan gagal) melakukan ini beberapa waktu lalu. Saya akhirnya membungkus perintah saya dalam skrip shell yang membuang pid ke file. Bukan solusi terbaik tetapi membuat saya melewati rintangan ini.


Masih belum ada API publik untuk ini (lihat http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896) tetapi ada beberapa solusi.

Solusi pertama adalah dengan menggunakan program eksternal seperti ps dan untuk memanggilnya menggunakan Runtime.exec() untuk mendapatkan pid :)

Satu lagi didasarkan pada fakta bahwa java.lang.Process kelas abstrak dan Anda benar-benar mendapatkan subkelas konkret tergantung pada platform Anda. Di Linux, Anda akan mendapatkan java.lang.UnixProcess yang memiliki bidang pribadi int pid . Menggunakan refleksi, Anda dapat dengan mudah mendapatkan nilai bidang ini:

Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
System.out.println( f.get( p ) );

Linux
  1. Cara menginstal Java di Linux

  2. Linux – Bagaimana Cara Membuat Oracle Java 7 Bekerja Dengan Setcap Cap_net_bind_service+ep?

  3. Proses Yang Memiliki Pid 0?

  1. Secara terprogram dapatkan induk pid dari proses lain?

  2. Bunuh proses java (di linux) dengan nama proses, bukan PID

  3. Bagaimana cara mendapatkan PID dengan nama proses?

  1. Membunuh subproses yang dimulai sudo dengan python

  2. Bagaimana cara mendapatkan PID induk dari proses yang diberikan di GNU/Linux dari baris perintah?

  3. Bagaimana cara mendapatkan pid dari suatu proses dan mengaktifkan kill -9 di skrip Shell?