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程序已经退出。

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