在java中有調(diào)用外部程序的類,Runtime.getRuntime().exec("./**.exe");此函數(shù)返回的是一個(gè)Process 對(duì)象,該對(duì)象在創(chuàng)建后,可以對(duì)它進(jìn)行 destroy () 殺掉子進(jìn)程、 waitFor () 導(dǎo)致當(dāng)前線程等待,如有必要,一直要等到由該 Process 對(duì)象表示的進(jìn)程已經(jīng)終止。 而你想要的屏蔽空格的問題,在批處理中可以把整個(gè)命令用雙引號(hào)包起來(lái)就可以避免了。
創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、網(wǎng)站制作、成都做網(wǎng)站、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)制作的專業(yè)的建站公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁(yè)設(shè)計(jì)人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來(lái)曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)成百上千。
解決這個(gè)問題,要看這個(gè)進(jìn)程是java程序自定義的進(jìn)程,還是操作系統(tǒng)的進(jìn)程,操作系統(tǒng)的進(jìn)程,又可以分為windows進(jìn)程和Linux進(jìn)程
一、針對(duì)操作系統(tǒng)的進(jìn)程:
1,首先java用戶,要具有操作進(jìn)程的權(quán)限
2. 針對(duì)windows操作系統(tǒng)的進(jìn)程,比如QQ進(jìn)程:
String?command?=?"taskkill?/f?/im?QQ.exe";??
Runtime.getRuntime().exec(command);
其中:taskkill 是命令名稱,/f /im 是參數(shù),QQ.exe是進(jìn)程的可執(zhí)行文件。
3.針對(duì)Linux操作系統(tǒng)
String?command?=?"kill?/f?/im?QQ.exe";??
Runtime.getRuntime().exec(command);
二、在Java程序中自定義的進(jìn)程
思路:在線程中設(shè)置一個(gè)標(biāo)志變量,當(dāng)這個(gè)變量的值在外界被改變的時(shí)候,有機(jī)會(huì)結(jié)束運(yùn)行的線程
public?class?T?{
public?static?void?main(String[]?args)?{
//?啟動(dòng)線程
MyThread?thread?=?new?MyThread();
new?Thread(thread).start();
//?你的其它的工作,此時(shí)線程在運(yùn)行中
//?你不想讓線程干活了,停掉它
//?注意,這只是一個(gè)標(biāo)志,具體線程何時(shí)停,并不能精確控制
thread.allDone?=?true;
}
}?
class?MyThread?implements?Runnable?{
boolean?volatile?allDone?=?false;
public?void?run()?{
//?每次循環(huán)都檢測(cè)標(biāo)志
//?如果設(shè)置停止標(biāo)志時(shí)已經(jīng)在循環(huán)里
//?則最長(zhǎng)需要等待一個(gè)循環(huán)的時(shí)間才能終止
while?(!allDone)?{
//?循環(huán)里的工作
}
}
}
java中有調(diào)用外部程序的類,Runtime.getRuntime().exec("./**.exe");此函數(shù)返回的是一個(gè)Process 對(duì)象,該對(duì)象在創(chuàng)建后,可以對(duì)它進(jìn)行 destroy () 殺掉子進(jìn)程、 waitFor () 導(dǎo)致當(dāng)前線程等待,如有必要,一直要等到由該 Process 對(duì)象表示的進(jìn)程已經(jīng)終止。 如下例子可以殺掉已經(jīng)打開的文本進(jìn)程:
import?java.io.BufferedReader;
import?java.io.InputStreamReader;
public?class?Test
{????????
public?static?void?main(String[]?args)
{????????
try
{
String[]?cmd?=
{?"notepad.exe"};
Process?proc?=?Runtime.getRuntime().exec(cmd);//開啟文本
BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(proc
.getInputStream()));????????????????????????
String?string_Temp?=?in.readLine();
while?(string_Temp?!=?null)
{
System.out.println(string_Temp);
if(string_Temp.indexOf("notepad.exe")!=-1)
Runtime.getRuntime().exec("Taskkill?/IM?notepad.exe");
string_Temp?=?in.readLine();
}
}
catch?(Exception?e)
{
//結(jié)束進(jìn)程
}
}
結(jié)果如下: