Process与ProcessImpl类源码解析

因为Runtime里的exec方法与这个类关联密切,所以这里对这个类进行了分析。
之前在文章《System与Runtime源码解析》里已经简单说了下这个类的用途,可以想象成一个外部应用程序的代理对象。
该类是个抽象类,目前java里只有一个实现类ProcessImpl类。
Process抽象类里大致提供以下一个抽象方法:
几个输入/输出流
waitFor方法,用来等待外部程序运行完成(是一个阻塞的方法)
destory方法,就是主动关闭外部应用程序
还有一个就是获取应用程序的返回值,简单地说,就是应用程序是否是正常终止

在ProcessImpl里就具体实现了这些方法。
首先是ProcessImpl只能被ProcessBuilder.start()这个方法进行创建。
其次几个主要的方法,已经本地化,如图:
Process与ProcessImpl类源码解析_第1张图片

这几个方法中,我常用的是waitFor方法,如果能够正常调用外部应用程序,那么就将阻塞,等外部程序运行完后,返回值是0;反之不能正常调用外部应用程序,将不会阻塞,直接返回值是2。
create方法是被ProcessBuilder.start()调用的,也就是创建了subprocess。
destory就是java主动去销毁这个subprocess。
目前我在使用过程当中,只能本地调用。如果想直接进行远程调用,无法正常运行。

你可能感兴趣的:(java,System,subprocess)