直接獲取不行哈,想都別想。我建議你看看操作系統(tǒng)內(nèi)核api很容易獲取到。一般都c語言或c++語言寫的.非得用java實(shí)現(xiàn),告訴你個(gè)辦法。看一下java如何訪問c/c++寫的程序,但是是否有權(quán)限不知道了。你可以參考java高級(jí)編程第二卷里面有說方法。
網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠為客戶提供服務(wù)是我們的理念。成都創(chuàng)新互聯(lián)把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
最好的方式,用操作系統(tǒng)api寫個(gè)服務(wù),用java做本地網(wǎng)絡(luò)請(qǐng)求調(diào)用,再把你采集出來的數(shù)據(jù),提取出來做處理就完了。要訪問進(jìn)程信息,用系統(tǒng)api也會(huì)有安全性考慮,但是完全可控的。把目標(biāo)進(jìn)程當(dāng)服務(wù)進(jìn)程的子進(jìn)程啟動(dòng),設(shè)置適合的權(quán)限,服務(wù)進(jìn)程就能讀取到子進(jìn)程的信息。
用top -u 命令查看進(jìn)程以及PID。 命令如下: $ top -u PID — 進(jìn)程idUSER — 進(jìn)程所有者PR —
鼠標(biāo)放在電腦桌面底部右擊,選擇任務(wù)管理器,就能看到你想看的了
代碼:
package com.test;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class Target {
public static void main(String[] args) throws InterruptedException { System.out.println(getProcessID());
while(true) {
Thread.sleep(10000);
}
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
System.out.println(runtimeMXBean.getName());
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) .intValue();
}
}
運(yùn)行結(jié)果:2896@PC-20150603VRPL2896
當(dāng)前進(jìn)程ID為2896。
ManagementFactory是一個(gè)在運(yùn)行時(shí)管理和監(jiān)控Java VM的工廠類,它能提供很多管理VM的靜態(tài)接口,比如RuntimeMXBean;
RuntimeMXBean是Java虛擬機(jī)的運(yùn)行時(shí)管理接口.
import?java.io.BufferedReader;
import?java.io.InputStream;
import?java.io.InputStreamReader;
public?class?TestCMD?{
public?static?void?main(String[]?args)?throws?Exception?{
System.out.println("===start===");
Runtime?runtime?=?Runtime.getRuntime();
Process?process?=?runtime.exec("tasklist");
InputStream?inputStream?=?process.getInputStream();
BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(inputStream,"gbk"));
String?line?=?"";
while?(null?!=?(line?=?reader.readLine()))?{
System.out.println(line);
}
inputStream.close();
int?exitVal?=?process.waitFor();
System.out.println("命令執(zhí)行最終返回值:"?+?exitVal);
System.out.println("===end===");
}
}
利用的是cmd下的tasklist命令,具體參數(shù)可以通過cmd下:
tasklist /?
命令查詢;
手打,望采納。
進(jìn)程?我不太了解。但是要是線程是可以的,因?yàn)槊總€(gè)線程有個(gè)id,而且你也可以給線程設(shè)置名稱。這樣的話,你可以根據(jù)id號(hào)或名字來查看線程當(dāng)前的狀態(tài)