Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java9でProcessAPIを使用してプロセスのすべての子を取得するにはどうすればよいですか?


プロセス 処理 クラスと関連APIはJava9で導入されました 。 ProcessHandleを使用できます pidを取得するためのインターフェースと関連メソッド およびその他の関連プロセスに関する情報。プロセスのすべての子を取得してから、 java.lang.ProcessHandle.children()を使用する必要があります。 方法。このメソッドは、ストリーム(通常は子を持たないプロセス)を返します。

以下の例では、最初のプロセスを取得し、その子のプロセス情報を取得できます。

import java.util.stream.Stream;
import java.util.Optional;

public class ChilderenProcessTest {
   public static void main(String args[]) throws InterruptedException {
      System.out.println("---------------------------");
      System.out.println("Children Processes:");
      Optional<ProcessHandle> processHandle = ProcessHandle.allProcesses().findFirst();
      processHandle.ifPresent(proc -> proc.children().forEach(child -> System.out.println("PID: [ " + child.pid() + " ], Cmd: [ " + child.info().command() + " ]")));
   }
}
出力
---------------------------
Children Processes:
PID: [ 0 ], Cmd: [ Optional.empty ]
PID: [ 4 ], Cmd: [ Optional.empty ]
PID: [ 424 ], Cmd: [ Optional.empty ]
PID: [ 504 ], Cmd: [ Optional.empty ]
PID: [ 560 ], Cmd: [ Optional.empty ]
PID: [ 444 ], Cmd: [ Optional.empty ]
PID: [ 1236 ], Cmd: [ Optional.empty ]
PID: [ 1288 ], Cmd: [ Optional.empty ]
PID: [ 1408 ], Cmd: [ Optional.empty ]
PID: [ 1424 ], Cmd: [ Optional.empty ]
PID: [ 1452 ], Cmd: [ Optional.empty ]
PID: [ 1468 ], Cmd: [ Optional.empty ]
PID: [ 5412 ], Cmd: [ Optional[C:\WINDOWS\System32\taskhostex.exe] ]
PID: [ 3760 ], Cmd: [ Optional[C:\Program Files\Synaptics\SynTP\SynTPEnh.exe] ]
PID: [ 5216 ], Cmd: [ Optional[C:\WINDOWS\explorer.exe] ]
PID: [ 2460 ], Cmd: [ Optional[C:\Program Files (x86)\Dell Wireless\Bluetooth Suite\BtvStack.exe] ]
PID: [ 6064 ], Cmd: [ Optional[C:\Program Files\Realtek\Audio\HDA\RtkNGUI64.exe] ]
PID: [ 7172 ], Cmd: [ Optional[C:\Program Files (x86)\Google\Chrome\Application\chrome.exe] ]
PID: [ 860 ], Cmd: [ Optional[C:\Program Files (x86)\Google\Chrome\Application\chrome.exe] ]
PID: [ 9000 ], Cmd: [ Optional.empty ]
PID: [ 4180 ], Cmd: [ Optional[C:\WINDOWS\System32\cmd.exe] ]
PID: [ 3748 ], Cmd: [ Optional[C:\WINDOWS\System32\conhost.exe] ]
PID: [ 3376 ], Cmd: [ Optional.empty ]
PID: [ 2548 ], Cmd: [ Optional.empty ]
PID: [ 1820 ], Cmd: [ Optional[C:\Program Files\Java\jdk-9.0.4\bin\java.exe] ]

  1. 年APIクラスを使用してAndroidで年を取得するにはどうすればよいですか?

    この例は、yearAPIクラスを使用してAndroidでyearを取得する方法について示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.Const

  2. Java 9でProcessBuilderを使用してプロセスを作成するにはどうすればよいですか?

    Java 9 ProcessHandleを追加しました プロセスAPIへのインターフェース プロセスクラスを強化します。 ProcessHandleインターフェースのインスタンスは、プロセスのステータスを照会できるようにするローカルプロセスを識別します プロセスの管理と管理、および ProcessHandle.Info PID を取得する必要があるため、ローカルコードを使用できます ローカルプロセスの。 ProcessBuilder クラスを使用して、個別のオペレーティングシステムプロセスを作成できます。以下の例では、「メモ帳」のプロセスを作成できます。 ProcessBuil