该实例可用来控制进程并获得相关信息。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程序已经退出。