如何在Java中获取当前打开进程的列表?
了解系统中运行的进程(无论是前台进程还是后台进程)对于用户至关重要。在 Windows 中,我们有任务管理器,但它内部使用一个名为 tasklist 的程序。除了提供当前运行的进程外,tasklist 还提供每个进程的详细信息,例如进程 ID、会话名称、会话和内存使用情况。
在本文中,我们将了解如何使用 Java 编程语言获取当前打开进程的列表。
算法
步骤 1 - 创建一个执行 tasklist.exe 的进程。
步骤 2 - 创建一个 BufferedReader 类,它接收进程对象。
步骤 3 - 使用 while 循环逐行读取进程详细信息并打印出来。
语法
要运行位于 system32 文件夹中的 tasklist.exe,我们需要调用一个进程对象,然后执行。
以下是使用该方法执行 tasklist.exe 程序的语法
Process process_object = Runtime.getRuntime().exec(System.getenv("windir") + "\system32" + "tasklist.exe");
注意此程序无法在任何在线编辑器中运行。要在本地系统中获取当前打开进程的列表,您需要仅在本地编辑器(Java IDE)中运行它。
方法:使用 tasklist.exe 列出所有活动进程
在这种方法中,我们调用一个在 WIN32 文件夹中执行 tasklist.exe 的进程。之后,我们使用 BufferedReader 读取所有活动进程,并逐个将其打印到控制台。
示例
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
try {
// String variable to store process details
String processes;
// Execute tasklis.exe from win32
Process p = Runtime.getRuntime().exec(System.getenv("windir") + "\system32" + "tasklist.exe");
// Buffered reader to read from the process object
BufferedReader br = new BufferedReader(newInputStreamReader(p.getInputStream()));
// Prints all processes one by one
while ((processes = br.readLine()) != null) {
System.out.println(processes);
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
输出
Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 8 K System 4 Services 0 9,416 K Registry 140 Services 0 30,420 K smss.exe 604 Services 0 1,076 K csrss.exe 976 Services 0 5,936 K csrss.exe 1112 Console 1 14,144 K winlogon.exe 1164 Console 1 11,704 K wininit.exe 1216 Services 0 6,628 K services.exe 1260 Services 0 9,804 K lsass.exe 1276 Services 0 27,360 K svchost.exe 1396 Services 0 1,388 K fontdrvhost.exe 1428 Console 1 6,608 K ...
在本文中,我们探讨了如何在 Java 中查找当前打开进程的列表。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP