Process与ProcessImpl类源码解析

本文详细解析了Java中Process抽象类及其唯一实现类ProcessImpl的功能与使用方法。重点关注了如何通过ProcessBuilder启动子进程,以及如何利用waitFor方法来同步等待子进程结束并获取其返回值。同时探讨了在实际应用中遇到的本地调用限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在ProcessImpl里就具体实现了这些方法。
首先是ProcessImpl只能被ProcessBuilder.start()这个方法进行创建。
其次几个主要的方法,已经本地化,如图:


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值