Spec-Zone.ru › OpenJDK 8

Класс Process

  • java.lang.Object
    • java.lang.Process

public abstract class Process
extends Object

Методы ProcessBuilder.start() и Runtime.exec создают нативный процесс и возвращают экземпляр подкласса Process, который можно использовать для управления процессом и получения информации о нём. Класс Process предоставляет методы для выполнения ввода из процесса, выполнения вывода в процесс, ожидания завершения процесса, проверки состояния выхода процесса и уничтожения (остановки) процесса.

Методы, создающие процессы, могут работать некорректно для специальных процессов на определённых платформах, таких как нативные процессы оконного интерфейса, демон-процессы, процессы Win16/DOS в Microsoft Windows или командные файлы.

По умолчанию, созданный дочерний процесс не имеет собственного терминала или консоли. Все его операции стандартного ввода/вывода (то есть stdin, stdout, stderr) будут перенаправлены в родительский процесс, где они доступны через потоки, полученные с помощью методов getOutputStream(), getInputStream() и getErrorStream(). Родительский процесс использует эти потоки для передачи ввода и получения вывода из дочернего процесса. Поскольку некоторые платформы предоставляют ограниченный размер буфера для потоков стандартного ввода и вывода, отсутствие своевременного записи в поток ввода или чтения из потока вывода дочернего процесса может привести к блокировке дочернего процесса или даже к тупиковой ситуации.

Если необходимо, перенаправление ввода/вывода дочернего процесса также может быть выполнено с помощью методов класса ProcessBuilder.

Дочерний процесс не уничтожается при отсутствии ссылок на объект Process, а продолжает выполняться асинхронно.

Не требуется, чтобы процесс, представленный объектом Process, выполнялся асинхронно или параллельно с процессом Java, владеющим объектом Process.

Начиная с версии 1.5, ProcessBuilder.start() является предпочтительным способом создания Process.

Since:
JDK1.0

Конструкторы

Конструктор и описание
Process()

Методы

Модификатор и тип Метод и описание
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, не завершится, или не истечёт указанное время ожидания.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

Process

public Process()

Методы

getOutputStream

public abstract OutputStream getOutputStream()

Возвращает поток вывода, подключённый к обычному вводу дочернего процесса. Вывод в поток направляется в стандартный ввод процесса, представленного этим объектом Process.

Если стандартный ввод дочернего процесса был перенаправлен с помощью ProcessBuilder.redirectInput, этот метод вернёт пустой поток вывода.

Примечание по реализации: Желательно, чтобы возвращаемый поток вывода был буферизован.

Возвращает:
поток вывода, подключённый к обычному вводу дочернего процесса

getInputStream

public abstract InputStream getInputStream()

Возвращает поток ввода, подключённый к обычному выводу дочернего процесса. Поток получает данные, перенаправленные из стандартного вывода процесса, представленного этим объектом Process.

Если стандартный вывод дочернего процесса был перенаправлен с помощью ProcessBuilder.redirectOutput, этот метод вернёт пустой поток ввода.

В противном случае, если стандартная ошибка дочернего процесса была перенаправлена с помощью ProcessBuilder.redirectErrorStream, поток ввода, возвращаемый этим методом, получит объединённый стандартный вывод и стандартную ошибку дочернего процесса.

Примечание по реализации: Желательно, чтобы возвращаемый поток ввода был буферизован.

Возвращает:
поток ввода, подключённый к обычному выводу дочернего процесса

getErrorStream

public abstract InputStream getErrorStream()

Возвращает поток ввода, подключённый к выводу ошибок дочернего процесса. Поток получает данные, перенаправленные из вывода ошибок процесса, представленного этим объектом Process.

Если стандартная ошибка дочернего процесса была перенаправлена с помощью ProcessBuilder.redirectError или ProcessBuilder.redirectErrorStream, этот метод вернёт пустой поток ввода.

Примечание по реализации: Желательно, чтобы возвращаемый поток ввода был буферизован.

Возвращает:
поток ввода, подключённый к выводу ошибок дочернего процесса

waitFor

public abstract int waitFor()
                     throws InterruptedException

Заставляет текущую нить подождать, если необходимо, пока процесс, представленный этим объектом Process, не завершится. Этот метод возвращает сразу, если дочерний процесс уже завершился. Если дочерний процесс ещё не завершился, вызывающая нить будет заблокирована до выхода дочернего процесса.

Возвращает:
значение выхода дочернего процесса, представленного этим объектом Process. По соглашению, значение 0 указывает на нормальное завершение.
Исключения:
InterruptedException - если текущая нить прерывается другой нитью во время ожидания, то ожидание завершается и выбрасывается исключение InterruptedException.

waitFor

public boolean waitFor(long timeout,
                       TimeUnit unit)
                throws InterruptedException

Заставляет текущую нить подождать, если необходимо, пока дочерний процесс, представленный этим объектом Process, не завершится, или не истечёт указанное время ожидания.

Если дочерний процесс уже завершился, этот метод возвращает значение true сразу. Если процесс не завершился и значение таймаута меньше или равно нулю, этот метод возвращает значение false сразу.

Базовая реализация этого метода опрашивает exitValue для проверки завершения процесса. Конкретные реализации этого класса настоятельно рекомендуются переопределять этот метод более эффективной реализацией.

Параметры:
timeout - максимальное время ожидания
unit - единица измерения для параметра timeout
Возвращает:
true если дочерний процесс завершился и false если время ожидания истекло до завершения дочернего процесса.
Исключения:
InterruptedException - если текущая нить прервана во время ожидания.
NullPointerException - если единица измерения null
Since:
1.8

exitValue

public abstract int exitValue()

Возвращает значение выхода дочернего процесса.

Возвращает:
значение выхода дочернего процесса, представленного этим объектом Process . По соглашению, значение 0 указывает на нормальное завершение.
Исключения:
IllegalThreadStateException - если дочерний процесс, представленный этим объектом Process , ещё не завершился

destroy

public abstract void destroy()

Уничтожает дочерний процесс. Способ, которым дочерний процесс, представленный этим объектом Process, завершается насильно, зависит от реализации.

destroyForcibly

public Process destroyForcibly()

Уничтожает дочерний процесс. Дочерний процесс, представленный этим объектом Process, завершается насильно.

Базовая реализация этого метода вызывает destroy(), поэтому может не завершить процесс насильно. Конкретные реализации этого класса настоятельно рекомендуются переопределять этот метод с соответствующей реализацией. Вызов этого метода для объектов Process, возвращённых ProcessBuilder.start() и Runtime.exec(java.lang.String), приведёт к насильственному завершению процесса.

Примечание: Дочерний процесс может не завершиться сразу. То есть isAlive() может возвращать true в течение короткого периода после вызова destroyForcibly(). Этот метод может быть вызван повторно, если необходимо, после waitFor().

Возвращает:
объект Process , представляющий дочерний процесс, который необходимо уничтожить насильно.
Since:
1.8

isAlive

public boolean isAlive()

Проверяет, жив ли дочерний процесс, представленный этим объектом Process.

Возвращает:
true если дочерний процесс, представленный этим объектом Process , ещё не завершился.
Since:
1.8

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API