Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class Process extends Object
ProcessBuilder.start()
и Runtime.exec
методы создают собственный процесс и возвращают экземпляр подкласса Process
это может использоваться, чтобы управлять процессом и получить информацию об этом. class Process
обеспечивает методы для того, чтобы они выполнили ввод от процесса, выполняя вывод к процессу, ожидая процесса, чтобы завершиться, проверяя статус выхода процесса, и уничтожая (уничтожение) процесса. Методы, которые создают процессы, возможно, не работают хорошо на специальные процессы на определенных собственных платформах, таких как собственная работа с окнами обрабатывает, процессы демона, процессы Win16/DOS на Microsoft Windows, или сценарии оболочки.
По умолчанию у создаваемого подпроцесса нет своего собственного терминала или консоли. Весь его стандартный ввод-вывод (то есть stdin, stdout, stderr) операции будут перенаправлены к родительскому процессу, где к ним можно получить доступ через потоки, полученные, используя методы getOutputStream()
, getInputStream()
, и getErrorStream()
. Родительский процесс использует эти потоки, чтобы подать ввод к и быть выведенным от подпроцесса. Поскольку некоторые собственные платформы только обеспечивают ограниченный размер буфера для стандартных потоков ввода и вывода, отказ быстро записать, что входной поток или считать поток вывода подпроцесса может заставить подпроцесс блокировать, или даже мертвая блокировка.
Где требующийся, ввод-вывод подпроцесса может также быть перенаправлен, используя методы ProcessBuilder
class.
Подпроцесс не уничтожается, когда нет больше ссылок на Process
объект, а скорее подпроцесс продолжают выполняться асинхронно.
Нет никакого требования что процесс, представленный a Process
объект выполняется асинхронно или одновременно относительно процесса Java, которому принадлежит Process
объект.
С 1.5, ProcessBuilder.start()
привилегированный способ создать a Process
.
Конструктор и Описание |
---|
Process() |
Модификатор и Тип | Метод и Описание |
---|---|
abstract void |
destroy()
Уничтожает подпроцесс.
|
Процесс |
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
тогда этот метод возвратит нулевой поток вывода.
Примечание реализации: Это - хорошая идея для возвращенного потока вывода, который будет буферизован.
public abstract InputStream getInputStream()
Process
объект. Если стандартный вывод подпроцесса был перенаправлен, используя ProcessBuilder.redirectOutput
тогда этот метод возвратит нулевой входной поток.
Иначе, если стандартная ошибка подпроцесса была перенаправлена, используя ProcessBuilder.redirectErrorStream
тогда входной поток, возвращенный этим методом, получит объединенный стандартный вывод и стандартную ошибку подпроцесса.
Примечание реализации: Это - хорошая идея для возвращенного входного потока, который будет буферизован.
public abstract InputStream getErrorStream()
Process
объект. Если стандартная ошибка подпроцесса была перенаправлена, используя ProcessBuilder.redirectError
или ProcessBuilder.redirectErrorStream
тогда этот метод возвратит нулевой входной поток.
Примечание реализации: Это - хорошая идея для возвращенного входного потока, который будет буферизован.
public abstract int waitFor() throws InterruptedException
Process
объект завершился. Этот метод сразу возвращается, если подпроцесс уже завершился. Если подпроцесс еще не завершился, вызывающий поток будет блокирован до выходов подпроцесса.Process
объект. Условно, значение 0
указывает на нормальное завершение.InterruptedException
- если текущий поток прерывается другим потоком, в то время как это ожидает, то ожидание заканчивается и InterruptedException
бросается.public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException
Process
объект завершился, или указанное время ожидания протекает. Если подпроцесс уже завершил тогда этот метод возвраты сразу со значением true
. Если процесс не завершился, и значение тайм-аута является меньше чем, или равный, нуль, то этот метод сразу возвращается со значением false
.
Реализация по умолчанию этого методы опрашивает exitValue
проверять, завершился ли процесс. Конкретные реализации этого class строго поощряются переопределить этот метод с более эффективной реализацией.
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()
и так, возможно, не насильственно завершает процесс. Конкретные реализации этого class строго поощряются переопределить этот метод с совместимой реализацией. Вызов этого метода на Process
объекты, возвращенные ProcessBuilder.start()
и Runtime.exec(java.lang.String)
насильственно завершит процесс.
Отметьте: подпроцесс, возможно, сразу не завершается. то есть. isAlive()
может возвратить true в течение краткого периода после destroyForcibly()
вызывается. Этот метод может быть объединен в цепочку к waitFor()
если нужно.
Process
объект, представляющий подпроцесс, который будет насильственно уничтожен.public boolean isAlive()
Process
живо.true
если подпроцесс представляется этим Process
объект еще не завершился.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92