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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章