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

在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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值