命令提示符下使用taskkill /im 進(jìn)程名即可,必要是加/f強(qiáng)制結(jié)束
創(chuàng)新互聯(lián)專注于中大型企業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)和網(wǎng)站改版、網(wǎng)站營(yíng)銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計(jì)客戶上1000+,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開發(fā),在前進(jìn)的路上,與客戶一起成長(zhǎng)!
taskkill /?
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
描述:
使用該工具按照進(jìn)程 ID (PID) 或映像名稱終止任務(wù)。
參數(shù)列表:
/S system 指定要連接的遠(yuǎn)程系統(tǒng)。
/U [domain\]user 指定應(yīng)該在哪個(gè)用戶上下文執(zhí)行這個(gè)命令。
/P [password] 為提供的用戶上下文指定密碼。如果忽略,提示
輸入。
/FI filter 應(yīng)用篩選器以選擇一組任務(wù)。
允許使用 "*"。例如,映像名稱 eq acme*
/PID processid 指定要終止的進(jìn)程的 PID。
使用 TaskList 取得 PID。
/IM imagename 指定要終止的進(jìn)程的映像名稱。通配符 '*'可用來(lái)
指定所有任務(wù)或映像名稱。
/T 終止指定的進(jìn)程和由它啟用的子進(jìn)程。
/F 指定強(qiáng)制終止進(jìn)程。
/? 顯示幫助消息。
篩選器:
篩選器名 有效運(yùn)算符 有效值
----------- --------------- -------------------------
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne 映像名稱
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 會(huì)話編號(hào)。
CPUTIME eq, ne, gt, lt, ge, le CPU 時(shí)間,格式為
hh:mm:ss。
hh - 時(shí),
mm - 分,ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le 內(nèi)存使用量,單位為 KB
USERNAME eq, ne 用戶名,格式為 [domain\]user
MODULES eq, ne DLL 名稱
SERVICES eq, ne 服務(wù)名稱
WINDOWTITLE eq, ne 窗口標(biāo)題
說(shuō)明
----
1) 只有在應(yīng)用篩選器的情況下,/IM 切換才能使用通配符 '*'。
2) 遠(yuǎn)程進(jìn)程總是要強(qiáng)行 (/F) 終止。
3) 當(dāng)指定遠(yuǎn)程機(jī)器時(shí),不支持 "WINDOWTITLE" 和 "STATUS" 篩選器。
例如:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
Windows 任務(wù)管理器太弱了.
Linux 上面可以用 htop 工具查看進(jìn)程樹結(jié)構(gòu), 如果進(jìn)入 htop 是平板結(jié)構(gòu), 按 F5 切換為樹形結(jié)構(gòu).
Windows 上需要下載一個(gè)工具叫做 Process Explorer, 里面能以樹裝形式列舉各個(gè)進(jìn)程, 非常方便. (但是我已經(jīng)好久沒(méi)用 Win 了不太記得怎么操作也不知道最近版本有沒(méi)有大更新)
"在java里面去看,哪些程序調(diào)用了java" 這個(gè)我沒(méi)試過(guò). (老實(shí)說(shuō)覺(jué)得不太可能做到, 操作系統(tǒng)進(jìn)程管理一般讓父進(jìn)程來(lái)管理子進(jìn)程而不是反過(guò)來(lái). 即使 JPS 好像也要受限于此吧.)
如果確定 JPS 可以看到父進(jìn)程并且拿到 id 的話, 在 Linux shell 下面可以通過(guò)
jps | awk '{print "kill", $1}' | sh
來(lái)殺掉這些進(jìn)程. windows 上建議安裝 cygwin 工具并把 cygwin_root/bin 目錄加入系統(tǒng) path, 這樣在命令行中就可以使用了.
建議不要用 java 或者其它編程語(yǔ)言方式實(shí)現(xiàn), 太麻煩了.
首先,Java不允許你控制資源的釋放,所有的資源釋放都是由JVM來(lái)管理的,除非你退出JVM。
當(dāng)你對(duì)資源調(diào)用dispose方法時(shí),實(shí)際上是將資源的狀態(tài)置為已廢棄,gc會(huì)自動(dòng)來(lái)將資源釋放掉。
其次,setDefaultCloseOperation()方法是用來(lái)設(shè)置用戶在此窗體上發(fā)起 "close" 時(shí)默認(rèn)執(zhí)行的操作。其中DISPOSE_ON_CLOSE調(diào)用任意已注冊(cè)WindowListener的對(duì)象后隱藏并釋放該窗體;EXIT_ON_CLOSE則使用System exit方法退出JVM。
dispose()是Window類的方法,并非Container類,它的JDK APIDOC里面這樣描述:
釋放由此 Window、其子組件及其擁有的所有子組件所使用的所有本機(jī)屏幕資源。即這些 Component 的資源將被破壞,它們使用的所有內(nèi)存都將返回到操作系統(tǒng),并將它們標(biāo)記為不可顯示。
通過(guò)隨后調(diào)用 pack 或 show 重新構(gòu)造本機(jī)資源,可以再次顯示 Window 及其子組件。重新創(chuàng)建的 Window 及其子組件的狀態(tài)與釋放 Window 時(shí)這些對(duì)象的狀態(tài)一致(不考慮這些操作之間的其他更改)。
注:當(dāng) Java 虛擬機(jī) (VM) 中最后的可顯示窗口被釋放后,虛擬機(jī)可能會(huì)終止。
也就是說(shuō),調(diào)用dispose()方法是將對(duì)象占用的本地屏幕資源(screen resources)釋放,對(duì)象本身并沒(méi)有釋放,只是底層的對(duì)應(yīng)點(diǎn)已經(jīng)釋放了,所以仍然是可用的。
當(dāng)然,調(diào)用底層本地屏幕資源已經(jīng)被釋放的對(duì)象可能會(huì)出現(xiàn)一些錯(cuò)誤,有時(shí)會(huì)報(bào)一個(gè)SWTException: Widget is disposed...。
如果你的程序已經(jīng)沒(méi)有其他線程在運(yùn)行的話,當(dāng)所有的窗口都被dispose了之后,JVM也會(huì)退出。
你的問(wèn)題中,只需要將該子窗口dispose掉,并且將對(duì)該窗口的引用置為null,不用管它是否還能使用,gc會(huì)自動(dòng)將對(duì)象釋放的(不會(huì)立即釋放,對(duì)象有它的生命周期,gc會(huì)依照自己的算法進(jìn)行資源回收)。
pro.waitFor();
導(dǎo)致當(dāng)前線程等待,如有必要,一直要等到由該 Process 對(duì)象表示的進(jìn)程已經(jīng)終止。如果已終止該子進(jìn)程,此方法立即返回。如果沒(méi)有終止該子進(jìn)程,調(diào)用的線程將被阻塞,直到退出子進(jìn)程。
一般都是用一個(gè)線程去做處理運(yùn)行,另一個(gè)線程來(lái)做管理,
try {
final Process pro = Runtime.getRuntime().exec("notepad.exe");
new Thread(new Runnable() {
public void run() {
try {
pro.waitFor();
System.out.println(1);
pro.destroy();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1000);
pro.destroy();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
} catch (IOException e) {
e.printStackTrace();
}
我用的是一個(gè)新的線程,一般用主線程去做處理,控制他的關(guān)閉。你的另一個(gè)其他代碼也可以執(zhí)行。對(duì)于cmd這個(gè)窗體,就完全沒(méi)有思路了,java程序是沒(méi)辦法把他關(guān)閉掉,應(yīng)該是dos的權(quán)限比java的大吧。
新聞標(biāo)題:結(jié)束進(jìn)程樹java代碼 java 結(jié)束進(jìn)程
分享URL:http://aaarwkj.com/article16/hhhgdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、靜態(tài)網(wǎng)站、動(dòng)態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷推廣、營(yíng)銷型網(wǎng)站建設(shè)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)