【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/131714752
出自【进步*于辰的博客】
因为我发现目前,我对Java-API的学习意识比较薄弱,需要慢慢习惯使用Java-API,乃至剖析源码来提升自己的源码阅读能力和编码素质。
大家如果需要Java-API文档,我上传了【https://download.csdn.net/download/m0_69908381/87691693】。
文章目录
- 1、概述
- 2、方法摘要
- 2.1 abstract void destroy()
- 2.2 abstract int exitValue()
- 2.3 abstract InputStream getErrorStream()
- 2.4 abstract InputStream getInputStream()
- 2.5 abstract OutputStream getOutputStream()
- 2.6 abstract int waitFor()
1、概述
·public abstract class Process extends Object
ProcessBuilder.start()
和 Runtime.exec()
方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin,stdout,stderr
)操作都将通过三个流 (getOutputStream(),getInputStream(),getErrorStream()
) 重定向到父进程。父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。
当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。
从以下版本开始:
JDK1.0
另请参见:
ProcessBuilder、Runtime.exec(String\[\], String\[\], File)
2、方法摘要
2.1 abstract void destroy()
杀掉子进程。
说明:
先看源码。
注译:杀死子进程。此Process对象表示的子进程是否被强制终止取决于实现。
2.2 abstract int exitValue()
返回子进程的出口值。
说明:
先看源码。
注译:
-
返回:
- 此Process对象表示的子进程的退出值。按照惯例,0表示正常终止。 抛出:
- IllegalThreadStateException——如果这个Process对象表示的子进程还没有终止
2.3 abstract InputStream getErrorStream()
获得子进程的错误流。
说明:
先看源码。
注译:
返回连接到子进程的错误输出的输入流。流通过管道从process
对象表示的进程的错误输出中获取数据。
如果子进程的标准错误已使用ProcessBuilder重定向。ProcessBuilder.redirectError()
或ProcessBuilder.redirectErrorStream()
。那么这个方法将返回一个空输入流。
2.4 abstract InputStream getInputStream()
获得子进程的输入流。
说明:
先看源码。
注译:
返回连接到子进程的正常输出的输入流。流通过管道从这个process对象表示的进程的标准输出中获取数据。
如果子进程的标准输出已使用ProcessBuilder重定向。ProcessBuilder.redirectOutput()
则此方法将返回一个空输入流。
否则,如果使用ProcessBuilder重定向了子进程的标准错误。ProcessBuilder.redirectErrorStream()
则此方法返回的输入流将接收合并的标准输出和子进程的标准错误。
2.5 abstract OutputStream getOutputStream()
获得子进程的输出流。
说明:
先看源码。
注译:
返回连接到子进程的正常输入的输出流。流的输出通过管道连接到由此process对象表示的进程的标准输入。
如果子进程的标准输入已使用ProcessBuilder重定向。 ProcessBuilder.redirectInput()
则此方法将返回空输出流。
2.6 abstract int waitFor()
导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。
说明:
先看源码。
注译:
如果需要,使当前线程等待,直到由此process对象表示的进程终止。如果子进程已经终止,此方法将立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。
-
返回:
- 此Process对象表示的子进程的退出值。按照惯例,0表示正常终止。 抛出:
- InterruptedException—如果当前线程在等待时被另一个线程中断,则等待结束并抛出 InterruptedException。
本文持续更新中。。。