1. ホーム

[解決済み】Javaプログラムが自分自身のプロセスIDを取得するにはどうすればよいですか?

2022-03-24 01:01:27

質問

JavaプロセスのIDを取得する方法を教えてください。

プラットフォーム依存のハックがいくつかあることは知っていますが、より一般的なソリューションを希望します。

どのように解決するのですか?

すべてのjvm実装で動作が保証されるプラットフォーム非依存の方法は存在しない。 ManagementFactory.getRuntimeMXBean().getName() は最良の(最も近い)解決策のように見え、通常PIDを含んでいます。短いですし おそらく は、広く使われているすべての実装で機能します。

linux+windows では、次のような値が返されます。 "12345@hostname" ( 12345 はプロセスID)。ただし ドキュメントによると この値は保証されていません。

<ブロッククオート

実行中の Java 仮想マシンを表す名前を返します。この は任意の文字列を返すことができ、Java仮想 マシン実装は、プラットフォーム固有の有用な の情報を含む文字列が返される。実行中の各仮想マシン は異なる名前を持つことができる。

Java 9では 新しい プロセスAPI が使用できます。

long pid = ProcessHandle.current().pid();