📄 processuses.java
字号:
package fr.umlv.projet.procfs;import java.io.File;import java.io.FileNotFoundException;import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * * @author MA Xiao Jun & HUANG Wei * */public class Processuses { private static List<Processus> processuslist = new ArrayList<Processus>(); private static List<ProcessusTime> timelist = new ArrayList<ProcessusTime>(); /** * load information of processus from file "/proc". */ public synchronized static void loadProcess(){ saveProcessusTime(); processuslist.clear(); File f = new File("/proc"); String[] list = f.list(); for(String s : list){ try{ int pid = Integer.parseInt(s); ProcessusTime pt = findProcessusTime(pid); if(pt!=null) addProcessus(new Processus(pid,pt.getOldctime(),pt.getOldstime(),pt.getOldtime())); else addProcessus(new Processus(pid,0.0f,0.0f,0)); } catch(Exception e){} } timelist.clear(); } /** * Save the cpu time used by processuses to the list timelist. */ public static void saveProcessusTime(){ for(Processus proc : processuslist){ timelist.add(new ProcessusTime(proc.getPid(),proc.getOldctime(),proc.getOldstime(),proc.getOldtime())); } } /** * find the information of ProcessusTime by means of finding pid. * @param pid id of the processus. * @return information of cpu time used by processus. */ public static ProcessusTime findProcessusTime(int pid){ for(ProcessusTime pt : timelist) if(pt.getPid() == pid) return pt; return null; } /** * Return the list of processus. * @return processuslist which save the information of processus. */ public static List<Processus> getProcessusList(){ return processuslist; } /** * add processus to the list "processuslist". * @param processus the processus which is going to be add. */ public static void addProcessus(Processus processus){ processuslist.add(processus); } /** * Get the information of processus by means of pid. * @param pid the id of processus to be get. * @return if there is this processus return it,if not return null. */ public static Processus getProcessus(int pid){ for(Processus processus : processuslist){ if(processus.getPid() == pid) return processus; } return null; } /*probleme*/ /** * Remove processus from "processuslist". * @param pid the id of processus. */ public static void removeProcessus(int pid){ for(Processus processus : processuslist) if(processus.getPid() == pid) processuslist.remove(processus); } /** * Out put the "processuslist" by means of String. */ public String toString(){ StringBuilder sb = new StringBuilder(); for(Processus processus : processuslist){ sb.append(processus.toString()); } return sb.toString(); } /** * Return the number of processuses. * @return number of processuses. */ public static int getProcessNumber(){ return processuslist.size(); } /** * validate if the pid(processus) is exist. * @param pid id of processus. * @return result of validating. */ public static boolean isExist(int pid){ for(Processus proc:processuslist){ if(proc.getPid() == pid) return true; } return false; } /** * Return the number of threads. * @return number of threads. */ public static int getThreadNumber(){ int num = 0; for(Processus proc : processuslist){ num += Integer.parseInt(proc.getThreads()); } return num; } /** * Return the number of Handles. * @return number of Handles. */ public static int getHandleNumber(){ String s = ""; try { Scanner sc = new Scanner(new File("/proc/sys/fs/file-nr")); s = sc.next(); } catch (FileNotFoundException e) { e.printStackTrace(); } return Integer.parseInt(s); } public static void main(String[] args){ for(Processus pro : processuslist){ System.out.println(pro.getPid()+" "+pro.getUid()+" "+pro.getUser()); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -