java - 显示在系统上运行的进程,但在所有计算机上,而不仅仅是在我的计算机上
问题描述
这些指令显示在我的系统上运行的“操作”,但这些指令不在其他系统上运行。那么我如何使用“ProcessHandler”或任何其他方式在“所有系统”上运行指令(成为应用程序将在其上运行的所有系统的解决方案)。
或者一般来说:我如何使用“ProcessHandler”来显示在我的系统和另一个系统中运行的“所有进程”?,(当我接受这些指令并在另一个系统上运行它们时,我想要工作)我想要这些指令在不同系统的不同计算机上运行,我怎样才能做到这一点?
public void proc1(ActionEvent event) throws IOException {
try
{
FileReader reader = new FileReader(tt1.getText().replace(':', '-')+".txt");
BufferedReader bufferedReader = new BufferedReader(reader);
String line;
String proc="";
while ((line=bufferedReader.readLine()) != null) {
proc=proc+"\n"+line;
}
showMessageDialog(null,proc);
reader.close();
}
catch (IOException e)
{
showMessageDialog(null, "No Processes to view");
}
}
//get Process
s="";
try {
String line;
Process p = Runtime.getRuntime().exec
(System.getenv("windir") +"\\system32\\"+"tasklist.exe");
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
//System.out.println(line); //<-- Parse data here.
s=s+"\n"+line;
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
解决方案
也许ProcessHandle#allProcesses()可以帮助你(感谢@slaw的指针)。
如果它没有提供您需要的信息,并且除非您找到可以为所有支持的平台解决此问题的 3rd 方库,否则您可能需要以下步骤:
- 定义一个抽象平台特定代码的接口(例如提供一个方法
getTaskListCommand
) - 为每个受支持的平台编写此接口的实现(例如
getTaskListCommand
,使用您当前使用的命令实现 for WindowsSystem.getenv("windir") +"\\system32\\"+"tasklist.exe"
:) - 加载与平台匹配的实现,例如在ServiceLoader的帮助下
推荐阅读
- sorting - Auto sorting 2 sheets based on 1 of them
- javascript - How to use Sprite objects/animations in Vue Konva?
- java - 无法删除我的 ip_adress 中的前导零
- typescript - 如何在 tasks.json 中指定 TypeScript 的位置?
- c++ - 推导 LValue 引用类型
- sql - 几何和多边形函数之间的区别 - SQL Server
- mysql - 如何在 MySqlWorkbench 中禁用 INVISIBLE 索引选项?
- c++ - 释放锁时的线程调度
- php - Data not transferred between 2 forms using php-echo
- c++ - 内存泄漏到 v8 共享库 (dll) 版本 4.1.0.3