Jak uzyskać identyfikator mojego procesu Java?
Wiem, że istnieje kilka hacków zależnych od platformy, ale wolałbym bardziej ogólne rozwiązanie
1 odpowiedź
Nie ma niezależnego od platformy sposobu, który gwarantowałby działanie we wszystkich implementacjach Jvm. ManagementFactory.getRuntimeMXBean (). GetName ()
wygląda na najlepsze (najbliższe) rozwiązanie. Jest krótkie i prawdopodobnie działa w każdej implementacji w szerokim użyciu.
W systemie Linux + Windows zwraca wartość taką jak 12345 @ nazwa hosta (12345 jest identyfikatorem procesu). Miej na uwadze, że zgodnie z:
https://docs.oracle.com/javase/6/docs/api/java/lang/management/RuntimeMXBean.html#getName%28%29
nie ma żadnych gwarancji dotyczących tej wartości.
W Javie 9 można użyć nowego interfejsu API:
long pid = ProcessHandle.current().pid();