Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để tạo một quy trình bằng ProcessBuilder trong Java 9?


Java 9 đã thêm ProcessHandle giao diện với API xử lý để nâng cao lớp Quy trình. Một phiên bản của giao diện ProcessHandle xác định một quy trình cục bộ cho phép chúng tôi truy vấn trạng thái của quy trình và quản lý các quy trình và ProcessHandle.Info cho phép chúng tôi sử dụng mã cục bộ vì nhu cầu lấy PID của một quy trình cục bộ.

ProcessBuilder lớp có thể được sử dụng để tạo các quy trình hệ điều hành riêng biệt. Trong ví dụ dưới đây, chúng tôi có thể tạo quy trình " notepad" ứng dụng bằng cách sử dụng ProcessBuilder lớp học.

Ví dụ

import java.time.ZoneId;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.io.IOException;

public class ProcessBuilderTest {
   public static void main(String args[]) throws IOException {
      ProcessBuilder pb = new ProcessBuilder("notepad.exe");
      String np = "Not Present";
      Process p = pb.start();
      ProcessHandle.Info info = p.info();

      System.out.printf("Process ID : %s%n", p.pid());
      System.out.printf("Command name : %s%n", info.command().orElse(np));
      System.out.printf("Command line : %s%n", info.commandLine().orElse(np));

      System.out.printf("Start time: %s%n", info.startInstant().map(i -> i.atZone(ZoneId.systemDefault()).toLocalDateTime().toString()).orElse(np));

      System.out.printf("Arguments : %s%n", info.arguments().map(a -> Stream.of(a).collect(
Collectors.joining(" "))).orElse(np));

      System.out.printf("User : %s%n", info.user().orElse(np));
   }
}

Ví dụ trên khởi chạy ứng dụng notepad như bên dưới

Làm thế nào để tạo một quy trình bằng ProcessBuilder trong Java 9?

Đầu ra

Process ID : 3728
Command name : C:\WINDOWS\System32\notepad.exe
Command line : Not Present
Start time: 2020-04-20T18:06:30.378
Arguments : Not Present
User : Tutorialspoint\User