java 获取多个cmd 进程id java获取进程名称

软件: TensorFlow
全方位数据报表
许可分析

许可分析

免费体验
识别闲置、及时回收
许可优化

许可优化

免费体验
多维度智能分析
许可分析

许可分析

免费体验
减少成本、盘活许可
许可优化

许可优化

免费体验

我们对计算机的掌控,已经从桌面一对一的简单交互,跃升到能够指挥多股“并行作战”的复杂场面。也许您在搭建自动化脚本流程时,常遇到一个挑战:如何在 Java 数学中,精准地找出并监控那些繁忙的 cmd 进程,获取它们的 IDs 和运行的名称?面对这道题,就像在丛林中寻找特定的植物,既要敏锐的观察力,也要具备深入的研究与理解。下面,我们一同踏上一段技术探索的旅程,洞察 Java 语言在获取多个 cmd 进程 ID 及进程名称方面的奥秘。

故事开篇:与进程的初遇



cmd 是一位著名的“多工者”,它能同时处理多项任务,如同初升的金色太阳,分布在不同程序之中的进程,就像一粒粒微粒静静地洒在天际。

刚开始,小李(笔者化身)在进行一个自动化脚本的搭建,任务中要监控多个 cmd 进程的运行情况,以便适时操作或进行自动化处理。在 Java 世界里,面对如此需求,小李感到如同寻找沙漠中的绿洲,既新奇又不失挑战。

打开工具箱:Java 与 cmd 的连接线

Java 提供了一系列 API 来与 operating system(操作系统)进行交互。`ProcessBuilder` 类仿佛一把钥匙,打开了与命令行脚本对话的通道。


小李首先使用 `ProcessBuilder` 的 `start()` 方法启动 cmd 进程。 `Process` 对象,我们调用 Windows 中的 `cmd /C` 命令,将单一的进程启动操作变成多工的舞台背景,为后续的脚本执行提供了可能的舞台。

挖掘宝藏:获取进程 ID,探寻“绿洲之力”

获取 cmd 进程的 ID 是小李此行中的核心任务。在这里,我们应用到 `Process` 开箱的秘密武器——`getOutputStream()` 和 `getInputStream()`,这两者如同技术者的鹰眼,帮助我们捕捉到那些反应快如闪电的信息流。

`getInputStream()` 方法,技术员读取 cmd 命令执行后的输出信息。直接获取进程 ID 并不是直接读取输出就能轻易实现的。一般cmd 在启动进程后不直接输出进程 ID;这不意味着一切都不可视。在深入研究中,我们发现技巧性的命令来变通。

配置 `cmd` 命令时,利用 `start /B /WAIT &` 的组合,让一个进程在发送与新进程关联的状态更新信息之后,自动结束它自己的进程。在输出信息中就能捕捉到之前启动的进程 ID。

引导实践,代码实战“被发现的力量”

为了帮助理解与实操这一过程,下面提供一段示例代码,展示了获取多个 cmd 进程 ID 和名称的过程。

```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

public class ProcessMonitoring {
   public static void main(String[] args) {
       List processIDs = new CopyOnWriteArrayList<>();
       String cmdOutput;
       try {
           ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "for /L %%i in (1, 1, 3) do start /B i.exe");
           Process p = pb.start();
           BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
           String line;
           while ((line = reader.readLine()) != null) {
               cmdOutput = line.replaceAll("[^09]", ""); // 去除非数字字符后提取进程 ID
               processIDs.add(cmdOutput);
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
       
       System.out.println("捕获的进程 ID 及名称如下:");
       for (String id : processIDs) {
           System.out.println("进程 ID: " + id);
           System.out.println("进程名称: i.exe");  // 假设 i.exe 是每个进程相同
       }
   }
}
```

这段代码 `cmd /C` 命令启动了三个并行的 `i.exe` 进程,并利用 `grep` 类似的正则表达式技巧提取每个进程的 ID。之后,我们将这些 ID 存储在列表中,并显示出来。

结语:并非终点,而是新的开始

尽管实例探讨了 Java 在获取多个 cmd 进程 ID 及名称方面的实践,但我们并未完全触及这一复杂话题的底层机制。Java 与操作系统 API 的交互,就像是一门深奥的艺术与科学相融合的学问。此篇作者仅以一个切片道出了技术探索的大千世界中的一隅。

想要更深入地挖掘 Java 与命令行交互的潜能,不断探索和完善技术框架和实践方法,将是每一位开发者追求卓越和创新的途径。正如小李这次旅程一样,从初识到理解,从实践到分享,每一次探索都在增长我们对技术本质的理解,并在此基础上铺展出前所未见的技术应用前景。

提醒读者谨守编程伦理与安全性规则,在操作中让数据的准确收集与合理利用,不仅是对技术负责,也是对使用这些技术服务的对象负责。

相关推荐

TensorFlow2学习九、实现基础CNN
TensorFlow利用函数式API实现共享层
Tensorflow 2.x 模型-部署与实践
Ubuntu系统安装配置tensorflow开发环境
|NO.Z.00002|——————————|BigDataEnd|——|Arithmetic&TensorFlow.v02|——|TensorFlow:监督学习算法.v02|
|NO.Z.00003|——————————|BigDataEnd|——|Arithmetic&TensorFlow.v03|——|TensorFlow:监督学习算法.v03|
pytorch 有没有tensorflow lite一样的 pytorch和tensorflow可以一起装吗
tensorflow 二阶导数计算
TensorFlow嵌入Layer-多个操作
TensorFlow中张量(tensor)的理解
tensorflow slim 已经包含的网络和github上tensorflow预训练模型下载链接
【tensorflow】浅谈什么是张量tensor
cuda/tensorflow/keras安装笔记
PyTorch与TensorFlow特性对比
TensorFlow RNN Cell源码解析
TensorFlow表情识别设计
Tensorflow图像增强
stm32F4系列1:控制板。stm32f407zgt6,反客淘宝店,第二个版本,实验室用扩展底板原理图和PCB图截图。
java时间片轮转调度算法上机 基于时间片的轮转调度
java 获取多个cmd 进程id java获取进程名称

最近推荐

Jira任务管理与禅道系统的对比
Fusion 360 for mac v1.8.3 苹果电脑版
美国网络攻击他国的程序,被中国研究员破解!45个国家遭黑客攻击
工程师2小时破解3G网络128位通讯加密方法
英伟达算法遭破解,RTX30系恢复100%挖矿算力:显卡降价结束了?
速查!安卓系统可能遭遇重大风险,两分钟可轻松破解锁屏
大众背后的网络故事
AMD强势回归 3A服务器平台“Fiorano”重装上阵
6小时与100万用户 微软的Outlook邮箱
一张图看懂《分布式存储发展白皮书2023》
index-foot-banner-pc index-foot-banner-phone

点击一下 免费体验万千客户信任的许可优化平台

与100+大型企业一起,将本增效

与100+大型企业一起,将本增效

申请免费体验 申请免费体验