Vẫn không có API công khai cho điều này (xem http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896) nhưng có giải pháp thay thế.
Một cách giải quyết đầu tiên sẽ được sử dụng một chương trình bên ngoài như ps
và gọi nó bằng cách sử Runtime.exec()
để có được pid :)
Một số khác được dựa trên thực tế rằng lớp java.lang.Process
là trừu tượng và rằng bạn thực sự nhận một lớp con cụ thể tùy thuộc vào nền tảng của bạn. Trên Linux, bạn sẽ nhận được một java.lang.UnixProcess
có một trường riêng int pid
. Sử dụng phản chiếu, bạn có thể dễ dàng nhận được giá trị của lĩnh vực này:
Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
System.out.println(f.get(p));
Nguồn
2009-12-13 20:49:00
Chuỗi khen = "some_program" là tốt hơn trong trường hợp này – pstanton
Nó không phải là mã thực. Chỉ cần một đoạn trích để mô tả vấn đề. – Pawka