該實例可用來控制進程並獲得相關信息。Process類提供了執行從進程輸入、執行輸出到進程、等待進程完成、檢查進程的退出狀態以及銷燬(殺掉)進程的方法
如何使用,例子:
public static void main(String[] args) throws IOException, InterruptedException {
if(null != args && args.length != 0){
System.out.println("輸入的命令是:"+args[0]);
Process process = Runtime.getRuntime().exec(args[0]);
System.out.println("程序已經執行,輸出信息");
//System.out.println(process.waitFor());
//Thread.sleep(30000);
}else{
System.out.println("no params");
}
System.out.println("java end!!!");
}
解釋:
1.雖然說 Process 是新開了一個進程,但是這段代碼是不會等待 process 所開的進程的,會直接往下執行,代碼執行完畢之後,java程序結束,process 對象沒有了,但是process對應的進程也許是關閉的也許是開啓的(這得看process對應的進程開啓速度跟java程序退出(也就是process消失的速度)的速度誰快誰慢了)
這裏要解釋一下,因爲java程序結束的太快了,process對應的進程可能還沒開啓呢。
如果 運行 java Test notepad ,記事本可能會開啓,因爲notepad程序開啓很快的。並且java程序退出了,但是記事本還是開着的。
2.
2.1 如果 執行了 process.waitFor() 這個方法,這是java程序就會一直等待 process 對應的進程關閉退出之後(注意是 關閉退出 ),java程序纔會在往下執行。
2.2 當然,如果將 process.waitFor() 換成 Thread.sleep(30000) ,意思就變成:process 對應的進程開始執行,java程序等待 30000 毫秒 ,但是如果過了 30000 毫秒之後,java程序繼續往下執行直到java程序結束,可是process對應的進程還是保持原有的狀態,跟java程序沒關係了。但是process對象就沒有了,因爲java程序已經退出。