Process 類的使用

該實例可用來控制進程並獲得相關信息。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程序已經退出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章