public abstract class Process extends Object
ProcessBuilder.start()
和
Runtime.exec
方法创建一个本地处理并返回一个类
Process
可用于过程控制和获取信息的一个实例。类提供了用于执行
Process
从过程的输入方法,执行输出的过程,在等待的过程中完成,检查进程的退出状态,并摧毁(杀人)的过程。
该方法创建过程可能不是某些本地平台特殊工序的操作,如本地的窗口过程,守护进程,运行在微软Windows、DOS程序,或shell脚本。
默认情况下,创建的子进程没有自己的终端或控制台。所有标准I / O(即stdin,stdout和stderr)操作将被重定向到父进程,在那里他们可以通过流获得的使用方法getOutputStream()
,getInputStream()
访问,和getErrorStream()
。父进程使用这些流给输入和输出的过程。因为一些本地平台仅提供了标准的输入和输出流有限的缓冲区大小,未能及时写或读输入流的子进程的输出流可能会造成子进程的阻塞,甚至死锁。
在需要的情况下, subprocess I/O can also be redirected使用的ProcessBuilder
类方法。
子进程不被杀的时候,有没有更多的引用到Process
对象,而是子进程继续异步执行。
没有要求的过程Process
对象异步执行或同时就拥有Process
对象的java过程表示。
截至1.5日,ProcessBuilder.start()
是创建一个Process
的首选方式。
Constructor and Description |
---|
Process() |
Modifier and Type | Method and Description |
---|---|
abstract void |
destroy()
杀死子进程。
|
Process |
destroyForcibly()
杀死子进程。
|
abstract int |
exitValue()
返回子进程的退出值。
|
abstract InputStream |
getErrorStream()
返回连接到子进程的错误输出输入流。
|
abstract InputStream |
getInputStream()
返回连接到子进程的正常输出输入流。
|
abstract OutputStream |
getOutputStream()
返回连接到子进程的正常输入输出流。
|
boolean |
isAlive()
测试是否通过
Process 代表子还活着。
|
abstract int |
waitFor()
使当前线程等待,如果有必要,直到这
Process 对象表示的进程已经终止。
|
boolean |
waitFor(long timeout, TimeUnit unit)
使当前线程等待,如果有必要,直到这
Process 对象表示的子进程终止,或指定的等待时间的流逝。
|
public abstract OutputStream getOutputStream()
Process
对象表示的进程的标准输入。
如果子进程的标准输入被重定向使用ProcessBuilder.redirectInput
那么这个方法将返回一个null output stream。
实现说明:它是一个好主意,返回的输出流进行缓冲。
public abstract InputStream getInputStream()
Process
对象表示的进程的标准输出。
如果子进程的标准输出被重定向使用ProcessBuilder.redirectOutput
那么这个方法将返回一个null input stream。
否则,如果子进程的标准错误重定向ProcessBuilder.redirectErrorStream
然后一直使用此方法返回的输入流将获得合并后的标准输出和标准错误的过程。
实现说明:它是一个好主意,返回的输入流进行缓冲。
public abstract InputStream getErrorStream()
Process
对象表示的进程的错误输出。
如果子进程的标准错误已重定向使用ProcessBuilder.redirectError
或ProcessBuilder.redirectErrorStream
那么这个方法将返回一个null input stream。
实现说明:它是一个好主意,返回的输入流进行缓冲。
public abstract int waitFor() throws InterruptedException
Process
对象表示的进程已经终止。这个方法立即返回,如果子进程已经终止。如果子进程尚未结束,调用线程将被阻塞,直到子进程退出。
Process
对象表示的子进程的退出值。按照惯例,价值
0
表示正常终止。
InterruptedException
如果当前线程
interrupted由另一个线程在等待,然后等待结束,一个
InterruptedException
抛出。
public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException
Process
对象表示的子进程终止,或指定的等待时间的流逝。
如果子进程已经终止这个方法立即返回的值true
。如果进程没有终止,超时值小于或等于零,,,那么这个方法立即返回的值false
。
这种方法调查exitValue
检查进程已经终止的默认实现。这个类的具体实现,强烈鼓励重写此方法具有更有效的实现。
timeout
-最大等待时间
unit
的
timeout
争论的时间单位
true
如果子进程已退出,
false
如果等待子进程退出的时间。
InterruptedException
-如果当前线程中断等待。
NullPointerException
如果单元是空的
public abstract int exitValue()
Process
对象表示的子进程的退出值。按照惯例,价值
0
表示正常终止。
IllegalThreadStateException
-如果这
Process
对象表示的子过程尚未结束
public abstract void destroy()
Process
对象表示的子进程被强行终止或不依赖于具体的实现。
public Process destroyForcibly()
Process
对象表示的子进程被强行终止。
此方法的默认实现调用destroy()
等不得强行终止进程。强烈鼓励此类的具体实现重写此方法,以兼容的实现。调用此方法返回的对象Process
ProcessBuilder.start()
和Runtime.exec(java.lang.String)
将强行终止进程。
注:该过程不可能立即终止。即isAlive()
可能返回一个短暂的时期后destroyForcibly()
叫做。这种方法可以在waitFor()
如果需要。
Process
对象。
public boolean isAlive()
Process
代表子还活着。
true
如果这
Process
对象表示的子过程尚未结束。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.