Java 从Process对象中获取PID

描述

Java 9之前,系统没提供获取PID的方法,只能通过特殊办法获取。

解决办法

在Linux系统中Process的实现类是UNIXProcess,UNIXProcess的toString中包含PID,通过正则来获取其中的PID。

先附上UNIXProcess的toString的代码

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("Process[pid=");
        sb.append(pid);
        if (hasExited) {
            sb.append(" ,hasExited=true, exitcode=");
            sb.append(exitcode);
            sb.append("]");
        } else {
            sb.append(", hasExited=false]");
        }

        return sb.toString();
    }

解析PID代码

    private int getPid(Process process){
        List matches=RegexUtils.getMatches("pid=\\d*",process.toString());
        String pid="";
        if (matches!=null||matches.size()>0){
            pid=matches.get(0);
        }
        List pidList=RegexUtils.getMatches("\\d+",pid);
        if (pidList!=null||pidList.size()>0){
            pid=pidList.get(0);
        }else {
            pid="-1";
        }
        return Integer.valueOf(pid);
    }

 

你可能感兴趣的:(java)