java中关闭某个程序的进程 cmd /c taskkill /pid 具体的某个pid
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
public class Command {
private java.lang.Process p;
private InputStream is;
private OutputStream os;
private BufferedWriter bw;
private BufferedReader br;
private ProcessBuilder pb;
private InputStream stdErr;
public Command() {
}
//获取Process的输入,输出流
public void setCmd(String cmd) {
try {
p = Runtime.getRuntime().exec(cmd);
os = p.getOutputStream();
is = p.getInputStream();
stdErr = p.getErrorStream();
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
//向Process输出命令
public void writeCmd(String cmd) {
try {
bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write(cmd);
bw.newLine();
bw.flush();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//读出Process执行的程源结果
public String readCmd() {
StringBuffer sb = new StringBuffer();
br = new BufferedReader(new InputStreamReader(is));
String buffer = null;
try {
while ((buffer = br.readLine()) != null) {
sb.append(buffer + "\n");
}
System.out.println(p.waitFor());
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
//将命令一股脑塞入list中
public LinkedList<String> doCmd(LinkedList<String> lists) {
LinkedList<String> list = new LinkedList<String>();
for (String s : lists) {
writeCmd(s);
list.add(readCmd());
}
return list;
}
public static void main(String[] args) {
Command cmd = new Command();
cmd.setCmd("cmd");
cmd.writeCmd("TASKKILL /PID ");
System.out.println(cmd.readCmd());
//LinkedList<String> list = new LinkedList<String>();
//list.add("dir/b");
//list = cmd.doCmd(list);
// for(String s:list){
// System.out.print(s);
// }
}
}
在windows使用java-jar的方式运行jar包如何在杀死进程的
在 Windows 环境下使用 java -jar 命令运行 JAR 包时,会开启一个 CMD 窗口作为承载进程。进程若直接终止 Java 进程,源码CMD 窗口并不会随之关闭。清理其进a清趋势源码要实现同时关闭 Java 进程与 CMD 窗口的程源虚拟币源码免费目标,可采取以下策略:编写批处理文件、进程利用第三方工具或在 Java 代码中进行控制。源码
编写批处理文件时,清理其进a清可先启动 Java 应用程序,程源并记录 CMD 窗口 PID,进程通过 tasklist 和 findstr 查找具有指定标题的源码 CMD 窗口 PID,最后使用 taskkill 命令来关闭 Java 进程与 CMD 窗口。清理其进a清长沙网站源码搭建示例脚本如下:启动程序并设置窗口标题,程源使用 tasklist 和 findstr 查找窗口 PID,进程存储为 cmdPid 变量,使用 taskkill 关闭 Java 进程与 CMD 窗口。云路php源码
使用第三方工具,如 NirCmd,提供了更加强大和灵活的 Windows 操作功能。通过 NirCmd 的cake小程序源码 win close 命令,指定关闭具有特定标题的 CMD 窗口。首先需下载并安装 NirCmd,然后编写脚本,使用 nircmd win close title "JavaApp" 来关闭具有指定标题的 CMD 窗口。
在 Java 代码中控制进程,通过 Runtime.getRuntime().exec 启动进程,添加额外逻辑在需要时关闭相关进程和窗口。示例中,Java 代码启动 CMD 窗口运行 JAR 文件,通过 process.destroy() 方法关闭 CMD 窗口及其子进程。
总结:根据需求选择适当方案,批处理文件和第三方工具适用于自动化和脚本化场景,Java 代码控制适用于在 Java 程序中直接管理进程的场景。正确实施上述任一方案,皆能有效解决关闭 Java 进程时同时关闭 CMD 窗口的问题。
javaè·åè¿ç¨å称
代ç ï¼
package com.test;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class Target {
public static void main(String[] args) throws InterruptedException { System.out.println(getProcessID());
while(true) {
Thread.sleep();
}
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
System.out.println(runtimeMXBean.getName());
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) .intValue();
}
}
è¿è¡ç»æï¼@PC-VRPL
å½åè¿ç¨ID为ã
ManagementFactoryæ¯ä¸ä¸ªå¨è¿è¡æ¶ç®¡çåçæ§Java VMçå·¥åç±»ï¼å®è½æä¾å¾å¤ç®¡çVMçéææ¥å£ï¼æ¯å¦RuntimeMXBeanï¼
RuntimeMXBeanæ¯Javaèææºçè¿è¡æ¶ç®¡çæ¥å£.
2024-12-24 01:02
2024-12-24 00:53
2024-12-24 00:35
2024-12-23 23:52
2024-12-23 22:58