描述
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);
}
更多推荐
Java 从Process对象中获取PID
发布评论