📄 processus.java
字号:
package fr.umlv.projet.IG;import java.io.File;import java.io.FileNotFoundException;import java.io.UnsupportedEncodingException;import java.util.Scanner;public class Processus { private int pid; private String name; private String state; private String ppid; private String tgid; private String sleepAVG; private String tpid; private String tracePid; private String uid; private String gid; private String user; private String fdsize; private String vmSize; private String vmLck; private String vmRss; private String vmData; private String vmStk; private String vmExe; private String vmLib; private String vmPTE; private String threads; private String cmdLine; private String meminfo; private String cpuinfo; public static native String getUserName(int pid); static{ System.loadLibrary("testjni"); } public static String changeFloatSize(float value,int size){ String s = new String(value+""); int index=0; for(int i = 0;i<s.length();i++) if(s.charAt(i)=='.'){ index = i; break; } String s1 = s.substring(0,index+size+1); return s1; } public synchronized void enregistreData(Scanner sc){ String s = sc.next(); if(s.contains("Name")) this.name = sc.next(); if(s.contains("State")) this.state = sc.next(); if(s.contains("PPid")) this.ppid = sc.next(); if(s.contains("Uid")){ sc.next(); this.uid = sc.next(); int i = Integer.parseInt(this.uid); this.user = getUserName(i); } if(s.contains("Gid")) this.gid = sc.next(); if(s.contains("TracePid")) this.tracePid = sc.next(); if(s.contains("SleepAVG")) this.sleepAVG = sc.next(); if(s.contains("Tgid")) this.tgid =sc.next(); if(s.contains("FDSize")) this.fdsize = sc.next(); if(s.contains("VmSize")) this.vmSize = sc.next(); if(s.contains("VmLck")) this.vmLck = sc.next(); if(s.contains("VmStk")) this.vmStk = sc.next(); if(s.contains("VmRSS")) this.vmRss = sc.next(); if(s.contains("VmData")) this.vmData = sc.next(); if(s.contains("VmExe")) this.vmExe = sc.next(); if(s.contains("VmLib")) this.vmLib = sc.next(); if(s.contains("VmPTE")) this.vmPTE = sc.next(); if(s.contains("Threads")) this.threads = sc.next(); } public void traiterData(){ float Rss = Float.parseFloat(vmRss); float memTotal = Float.parseFloat(Meminfo.getMemTotal()); float mem = (Rss/memTotal)*100.0f; this.meminfo = changeFloatSize(mem,2); } public Processus(int pid) { this.pid = pid; String path1 = "/proc/"+pid+"/status"; String path2 = "/proc/"+pid+"/cmdline"; try { Scanner sc1 = new Scanner(new File(path1)); while(sc1.hasNext()){ enregistreData(sc1); } Scanner sc2 = new Scanner(new File(path2)); while(sc2.hasNext()){ try { this.cmdLine = new String(sc2.next().getBytes("UTF-8"),"US-ASCII"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } catch (FileNotFoundException e) { e.printStackTrace(); } traiterData(); } public int getPid(){ return pid; } public String getName(){ return name; } public String getState(){ return state; } public String getPpid(){ return ppid; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(pid); sb.append(name); sb.append(state); sb.append(ppid); return sb.toString(); } public static void main(String[] args){ System.out.println(Meminfo.getMemTotal()); Processus pro = new Processus(4217); Processus pro1 = new Processus(1);// System.out.println(pro.uid+" "+pro.uid.length()); System.out.println("hehe"+pro1.getCmdLine().charAt(6)==pro1.getCmdLine().charAt(7)+"haha"); System.out.println(pro.getCmdLine()+" "+pro.getCmdLine().length()); } public String getFdsize() { return fdsize; } public String getGid() { return gid; } public String getSleepAVG() { return sleepAVG; } public String getTgid() { return tgid; } public String getThreads() { return threads; } public String getTpid() { return tpid; } public String getTracePid() { return tracePid; } public String getUid() { return uid; } public String getUser() { return user; } public String getVmData() { return vmData; } public String getVmExe() { return vmExe; } public String getVmLck() { return vmLck; } public String getVmLib() { return vmLib; } public String getVmPTE() { return vmPTE; } public String getVmRss() { return vmRss; } public String getVmSize() { return vmSize; } public String getVmStk() { return vmStk; } public String getCmdLine() { return cmdLine; } public String getCpuinfo() { return cpuinfo; } public String getMeminfo() { return meminfo; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -