在JAVA程序中如何取得自身的进程号(PID)

T_java 专栏收录该内容
145 篇文章 0 订阅

在JAVA程序中如何取得自身的进程号(PID)

============================

需求如题,不再赘述。

 

在JDK1.5以上版本,自带了一个工具jps.exe,可以帮助我们达成目标,简单测试代码如下:

import java.io.*;

public class JpsTest{

  public static void test(){
    String jps = "bin\\jps.exe";
    try{
      Process p = Runtime.getRuntime().exec(jps);
      InputStream in = p.getInputStream();
      InputStreamReader reader = new InputStreamReader(in, "UTF-8");
      BufferedReader br = new BufferedReader(reader);
      String inStr = null;
      StringBuffer sb = new StringBuffer("");
      while( (inStr = br.readLine()) != null ){
        sb.append(inStr + "\r\n");
      }
      System.out.println(sb.toString());
      int count = 30;
      while(count-->0){
        try{
          Thread.currentThread().sleep(1000);
        }catch(Exception ex1){
          ex1.printStackTrace();
        }
      }
    }catch(Exception e){
      e.printStackTrace();
    }

  }

  public static void main(String[] args){
    JpsTest.test();
  }
}

 

在WinXP SP2上执行结果如下:

J:\>java JpsTest
740 JpsTest
3188 TCPMon
764 Jps

 

第一列是PID,第二列是程序名,根据程序名取出对应的PID即可。

 

JPS依赖 JDK_HOME\lib\tools.jar,如果是只在JRE环境下运行,需要把 JDK_HOME\bin\jps.exe 和 JDK_HOME\lib\tools.jar 分别复制到JRE_HOME\bin 和 JRE_HOME\lib下。对于有些对程序大小要求比较高的系统,可以给tools.jar瘦身,我不完全测试的结果如下:

tools.jar中只保留如下内容即可:

 

sun\jvmstat\ 下所有内容

sun\tools\jps 下所有内容

 

 ========================================

其实不用jps.exe也可以,只要执行:

 

J:\>java -cp lib\tools.jar sun.tools.jps.Jps
3188 TCPMon
3272 Jps

 

 

 

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值