Класс ProcessBuilder

public final class ProcessBuilder
extends Object

Этот класс используется для создания процессов операционной системы.

Каждый ProcessBuilder экземпляр управляет набором атрибутов процесса. Метод start() создает новый экземпляр Process с этими атрибутами. Метод start() может вызываться многократно из одного экземпляра для создания новых дочерних процессов с идентичными или связанными атрибутами.

Метод startPipeline может быть вызван для создания цепочки новых процессов, передающих вывод каждого процесса непосредственно следующему. Каждый процесс имеет атрибуты своего соответствующего ProcessBuilder.

Каждый объект ProcessBuilder управляет следующими атрибутами процесса:

  • команду, список строк, указывающий на исполняемый файл внешней программы и её аргументы (если есть). Какой список строк представляет собой допустимую команду операционной системы зависит от системы. Например, в большинстве случаев каждый концептуальный аргумент является элементом этого списка, но существуют операционные системы, где программы сами должны токенизировать строки командной строки — в такой системе Java-реализация может потребовать, чтобы команды содержали ровно два элемента.
  • среду, которая является зависящим от системы отображением переменных на значения. Начальное значение — копия среды текущего процесса (см. System.getenv()).
  • рабочую директорию. По умолчанию — текущая рабочая директория текущего процесса, обычно директория, указанная системной переменной user.dir.
  • источник стандартного ввода. По умолчанию дочерний процесс считывает данные из канала. Java-код может получить доступ к этому каналу через поток вывода, возвращаемый методом Process.getOutputStream(). Однако стандартный ввод может быть перенаправлен на другой источник с помощью redirectInput. В этом случае Process.getOutputStream() вернёт пустой поток вывода, для которого:
    • методы write всегда выбрасывают IOException
    • метод close ничего не делает
  • назначение стандартного вывода и стандартной ошибки. По умолчанию дочерний процесс записывает стандартный вывод и стандартную ошибку в каналы. Java-код может получить доступ к этим каналам через потоки ввода, возвращаемые Process.getOutputStream() и Process.getErrorStream(). Однако стандартный вывод и стандартная ошибка могут быть перенаправлены на другие назначения с помощью redirectOutput и redirectError. В этом случае Process.getInputStream() и/или Process.getErrorStream() вернут пустой поток ввода, для которого:
    • методы read всегда возвращают -1
    • метод available всегда возвращает 0
    • метод close ничего не делает
  • свойство redirectErrorStream. Изначально это свойство равно false, что означает, что стандартный вывод и вывод ошибок дочернего процесса отправляются в два отдельных потока, к которым можно получить доступ с помощью методов Process.getInputStream() и Process.getErrorStream().

    Если значение установлено в true, то:

    • стандартная ошибка объединяется со стандартным выводом и всегда отправляется в одно и то же место (это облегчает сопоставление сообщений об ошибках с соответствующим выводом)
    • общее назначение стандартной ошибки и стандартного вывода может быть перенаправлено с помощью redirectOutput
    • любое перенаправление, установленное методом redirectError, игнорируется при создании дочернего процесса
    • поток, возвращаемый Process.getErrorStream(), всегда будет пустым потоком ввода

Изменение атрибутов объекта ProcessBuilder повлияет на процессы, запущенные позже с помощью метода start() этого объекта, но никогда не повлияет на ранее запущенные процессы или сам Java-процесс.

Большая часть проверки ошибок выполняется методом start(). Возможно изменить состояние объекта так, чтобы вызов start() завершился неудачно. Например, установка атрибута команды в пустой список не вызовет исключения, пока не будет вызван метод start().

Обратите внимание, что этот класс не синхронизирован. Если несколько потоков обращаются к экземпляру ProcessBuilder одновременно, и по крайней мере один из потоков изменяет какой-либо атрибут структурно, необходимо обеспечить внешнюю синхронизацию.

Запуск нового процесса, использующего рабочую директорию и среду по умолчанию, очень прост:

Process p = new ProcessBuilder("myCommand", "myArg").start();

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

ProcessBuilder pb =
   new ProcessBuilder("myCommand", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 File log = new File("log");
 pb.redirectErrorStream(true);
 pb.redirectOutput(Redirect.appendTo(log));
 Process p = pb.start();
 assert pb.redirectInput() == Redirect.PIPE;
 assert pb.redirectOutput().file() == log;
 assert p.getInputStream().read() == -1;

Для запуска процесса со списком явных переменных среды, сначала вызовите Map.clear() перед добавлением переменных среды.

Если не указано иное, передача null аргумента в конструктор или метод этого класса приведёт к выбрасыванию исключения NullPointerException.

С момента:
1.5

Вложенные классы

Модификатор и тип Класс Описание
static class  ProcessBuilder.Redirect

Представляет источник ввода дочернего процесса или назначение вывода дочернего процесса.

Краткое описание конструкторов

Конструктор Описание
ProcessBuilder​(String... command)

Создаёт объект ProcessBuilder со заданной программой операционной системы и аргументами.

ProcessBuilder​(List<String> command)

Создаёт объект ProcessBuilder со заданной программой операционной системы и аргументами.

Краткое описание методов

Модификатор и тип Метод Описание
List<String> command()

Возвращает программу операционной системы и аргументы этого объекта ProcessBuilder.

ProcessBuilder command​(String... command)

Устанавливает программу операционной системы и аргументы этого объекта ProcessBuilder.

ProcessBuilder command​(List<String> command)

Устанавливает программу операционной системы и аргументы этого объекта ProcessBuilder.

File directory()

Возвращает рабочую директорию этого объекта ProcessBuilder.

ProcessBuilder directory​(File directory)

Устанавливает рабочую директорию этого объекта ProcessBuilder.

Map<String,​String> environment()

Возвращает отображение среды этого объекта ProcessBuilder в виде словаря строк.

ProcessBuilder inheritIO()

Устанавливает источник и место назначения стандартного ввода-вывода дочернего процесса такими же, как у текущего Java-процесса.

ProcessBuilder.Redirect redirectError()

Возвращает назначение стандартной ошибки этого объекта ProcessBuilder.

ProcessBuilder redirectError​(File file)

Устанавливает назначение стандартной ошибки этого объекта ProcessBuilder в файл.

ProcessBuilder redirectError​(ProcessBuilder.Redirect destination)

Устанавливает назначение стандартной ошибки этого объекта ProcessBuilder.

boolean redirectErrorStream()

Указывает, объединяет ли этот объект ProcessBuilder стандартную ошибку и стандартный вывод.

ProcessBuilder redirectErrorStream​(boolean redirectErrorStream)

Устанавливает свойство redirectErrorStream этого объекта ProcessBuilder.

ProcessBuilder.Redirect redirectInput()

Возвращает источник стандартного ввода этого объекта ProcessBuilder.

ProcessBuilder redirectInput​(File file)

Устанавливает источник стандартного ввода этого объекта ProcessBuilder в файл.

ProcessBuilder redirectInput​(ProcessBuilder.Redirect source)

Устанавливает источник стандартного ввода этого объекта ProcessBuilder.

ProcessBuilder.Redirect redirectOutput()

Возвращает назначение стандартного вывода этого объекта ProcessBuilder.

ProcessBuilder redirectOutput​(File file)

Устанавливает назначение стандартного вывода этого объекта ProcessBuilder в файл.

ProcessBuilder redirectOutput​(ProcessBuilder.Redirect destination)

Устанавливает назначение стандартного вывода этого объекта ProcessBuilder.

Process start()

Запускает новый процесс, используя атрибуты этого объекта ProcessBuilder.

static List<Process> startPipeline​(List<ProcessBuilder> builders)

Запускает процесс для каждого ProcessBuilder, создавая цепочку процессов, связанных стандартными потоками вывода и ввода.

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

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

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

ProcessBuilder

public ProcessBuilder(List<String> command)

Создаёт обработчик процесса с указанной программой операционной системы и аргументами. Этот конструктор не создаёт копию command списка. Последующие обновления списка будут отражены в состоянии обработчика процесса. Не проверяется, соответствует ли command допустимой команде операционной системы.

Параметры:
command - список, содержащий программу и её аргументы

ProcessBuilder

public ProcessBuilder(String... command)

Создаёт обработчик процесса с указанной программой операционной системы и аргументами. Это конструктор по умолчанию, который устанавливает команду обработчика процесса в список строк, содержащий те же строки, что и в массиве command, в том же порядке. Не проверяется, соответствует ли command допустимой команде операционной системы.

Параметры:
command - массив строк, содержащий программу и её аргументы

Методы

command

public ProcessBuilder command(List<String> command)

Устанавливает программу и аргументы операционной системы для этого билдера процесса. Данный метод не создает копию command списка. Последующие обновления списка будут отражены в состоянии билдера процесса. Не проверяется, соответствует ли command допустимой команде операционной системы.

Параметры:
command - список, содержащий программу и её аргументы
Возвращает:
этот билдер процесса

command

public ProcessBuilder command(String... command)

Устанавливает программу и аргументы операционной системы для этого билдера процесса. Это метод-утилита, который устанавливает команду в список строк, содержащий те же строки, что и command массив, в том же порядке. Не проверяется, соответствует ли command допустимой команде операционной системы.

Параметры:
command - массив строк, содержащий программу и её аргументы
Возвращает:
этот билдер процесса

command

public List<String> command()

Возвращает программу и аргументы операционной системы этого билдера процесса. Возвращаемый список не является копией. Последующие обновления списка будут отражены в состоянии этого билдера процесса.

Возвращает:
программа и аргументы билдера процесса

environment

public Map<String,String> environment()

Возвращает представление карты строк среды этого билдера процесса. Всякий раз, когда создается билдер процесса, среда инициализируется копией текущей среды процесса (см. System.getenv()). Подпроцессы, запущенные впоследствии этим объектом с помощью метода start(), будут использовать эту карту в качестве своей среды.

Возвращаемый объект можно изменить с помощью обычных операций Map. Эти изменения будут видны подпроцессам, запущенным с помощью метода start(). Два ProcessBuilder экземпляра всегда содержат независимые среды процессов, поэтому изменения в возвращаемой карте никогда не будут отражены в другом ProcessBuilder экземпляре или значениях, возвращаемых System.getenv.

Если система не поддерживает переменные среды, возвращается пустая карта.

Возвращаемая карта не допускает null-ключей или -значений. Попытка вставить или запросить наличие null-ключа или -значения вызовет NullPointerException. Попытка запросить наличие ключа или значения, которые не имеют тип String, вызовет ClassCastException.

Поведение возвращаемой карты зависит от системы. Система может не позволять изменять переменные среды или запрещать определенные имена или значения переменных. По этой причине попытки изменить карту могут завершиться ошибкой UnsupportedOperationException или IllegalArgumentException, если изменение не разрешено операционной системой.

Поскольку внешний формат имён и значений переменных среды зависит от системы, может не быть взаимно однозначного соответствия между ними и строками Юникода Java. Тем не менее, карта реализована таким образом, что переменные среды, которые не изменяются кодом Java, будут иметь неизменное внутреннее представление в подпроцессе.

Возвращаемая карта и её представления коллекций могут не подчиняться общему соглашению методов Object.equals(java.lang.Object) и Object.hashCode().

Возвращаемая карта обычно чувствительна к регистру на всех платформах.

Если существует менеджер безопасности, его метод checkPermission вызывается с разрешением RuntimePermission("getenv.*"). Это может привести к тому, что будет брошено исключение SecurityException.

При передаче информации подпроцессу Java свойства системы обычно предпочтительнее переменных среды.

Возвращает:
среда билдера процесса
Исключения:
SecurityException - если менеджер безопасности существует и его метод checkPermission не позволяет получить доступ к среде процесса
См. также:
Runtime.exec(String[],String[],java.io.File), System.getenv()

directory

public File directory()

Возвращает рабочую директорию этого билдера процесса. Подпроцессы, запущенные впоследствии этим объектом с помощью метода start(), будут использовать её в качестве своей рабочей директории. Возвращаемое значение может быть null — это означает использование рабочей директории текущего процесса Java, обычно директории, заданной системной переменной user.dir, в качестве рабочей директории дочернего процесса.

Возвращает:
рабочая директория билдера процесса

directory

public ProcessBuilder directory(File directory)

Устанавливает рабочую директорию этого билдера процесса. Подпроцессы, запущенные впоследствии этим объектом с помощью метода start(), будут использовать её в качестве своей рабочей директории. Аргумент может быть null — это означает использование рабочей директории текущего процесса Java, обычно директории, заданной системной переменной user.dir, в качестве рабочей директории дочернего процесса.

Параметры:
directory - новая рабочая директория
Возвращает:
этот билдер процесса

redirectInput

public ProcessBuilder redirectInput(ProcessBuilder.Redirect source)

Устанавливает источник стандартного ввода этого билдера процесса. Подпроцессы, запущенные впоследствии этим объектом с помощью метода start(), получают стандартный ввод из этого источника.

Если источник равен Redirect.PIPE (начальное значение), то стандартный ввод подпроцесса можно записать в выходной поток, возвращаемый Process.getOutputStream(). Если источник задан любым другим значением, то Process.getOutputStream() вернёт нулевой выходной поток.

Параметры:
source - новый источник стандартного ввода
Возвращает:
этот билдер процесса
Исключения:
IllegalArgumentException - если перенаправление не соответствует допустимому источнику данных, то есть имеет тип WRITE или APPEND
С:
1.7

redirectOutput

public ProcessBuilder redirectOutput(ProcessBuilder.Redirect destination)

Устанавливает пункт назначения стандартного вывода этого билдера процесса. Подпроцессы, запущенные впоследствии этим объектом с помощью метода start(), отправляют свой стандартный вывод в этот пункт назначения.

Если пункт назначения равен Redirect.PIPE (начальное значение), то стандартный вывод подпроцесса можно прочитать с помощью входного потока, возвращаемого Process.getInputStream(). Если пункт назначения задан любым другим значением, то Process.getInputStream() вернёт нулевой входной поток.

Параметры:
destination - новый пункт назначения стандартного вывода
Возвращает:
этот билдер процесса
Исключения:
IllegalArgumentException - если перенаправление не соответствует допустимому пункту назначения данных, то есть имеет тип READ
С:
1.7

redirectError

public ProcessBuilder redirectError(ProcessBuilder.Redirect destination)

Устанавливает пункт назначения стандартной ошибки этого билдера процесса. Подпроцессы, запущенные впоследствии этим объектом с помощью метода start(), отправляют свою стандартную ошибку в этот пункт назначения.

Если пункт назначения равен Redirect.PIPE (начальное значение), то вывод ошибок подпроцесса можно прочитать с помощью входного потока, возвращаемого Process.getErrorStream(). Если пункт назначения задан любым другим значением, то Process.getErrorStream() вернёт нулевой входной поток.

Если атрибут redirectErrorStream был установлен true, то перенаправление, заданное этим методом, не имеет эффекта.

Параметры:
destination - новый пункт назначения стандартной ошибки
Возвращает:
этот билдер процесса
Исключения:
IllegalArgumentException - если перенаправление не соответствует допустимому пункту назначения данных, то есть имеет тип READ
С:
1.7

redirectInput

public ProcessBuilder redirectInput(File file)

Устанавливает источник стандартного ввода этого билдера процесса на файл.

Это метод-утилита. Вызов вида redirectInput(file) ведет себя точно так же, как вызов redirectInput (Redirect.from(file)).

Параметры:
file - новый источник стандартного ввода
Возвращает:
этот билдер процесса
С:
1.7

redirectOutput

public ProcessBuilder redirectOutput(File file)

Устанавливает пункт назначения стандартного вывода этого билдера процесса на файл.

Это метод-утилита. Вызов вида redirectOutput(file) ведет себя точно так же, как вызов redirectOutput (Redirect.to(file)).

Параметры:
file - новый пункт назначения стандартного вывода
Возвращает:
этот билдер процесса
С:
1.7

redirectError

public ProcessBuilder redirectError(File file)

Устанавливает стандартное назначение вывода ошибок этого обработчика процессов на файл.

Это метод-удобство. Вызов вида redirectError(file) ведет себя точно так же, как вызов redirectError (Redirect.to(file)).

Parameters:
file - новое стандартное назначение вывода ошибок
Returns:
этот обработчик процессов
Since:
1.7

redirectInput

public ProcessBuilder.Redirect redirectInput()

Возвращает источник стандартного ввода обработчика процессов. Подпроцессы, запущенные впоследствии методом этого объекта start(), получают стандартный ввод из этого источника. Начальное значение — Redirect.PIPE.

Returns:
источник стандартного ввода этого обработчика процессов
Since:
1.7

redirectOutput

public ProcessBuilder.Redirect redirectOutput()

Возвращает назначение стандартного вывода этого обработчика процессов. Подпроцессы, запущенные впоследствии методом этого объекта start(), перенаправляют свой стандартный вывод в это назначение. Начальное значение — Redirect.PIPE.

Returns:
назначение стандартного вывода этого обработчика процессов
Since:
1.7

redirectError

public ProcessBuilder.Redirect redirectError()

Возвращает назначение стандартного вывода ошибок этого обработчика процессов. Подпроцессы, запущенные впоследствии методом этого объекта start(), перенаправляют свою стандартную ошибку в это назначение. Начальное значение — Redirect.PIPE.

Returns:
назначение стандартного вывода ошибок этого обработчика процессов
Since:
1.7

inheritIO

public ProcessBuilder inheritIO()

Устанавливает источник и назначение стандартного ввода/вывода подпроцесса равными источнику и назначению текущего процесса Java.

Это метод-удобство. Вызов вида

pb.inheritIO()
ведет себя точно так же, как вызов
pb.redirectInput(Redirect.INHERIT)
   .redirectOutput(Redirect.INHERIT)
   .redirectError(Redirect.INHERIT)
. Это обеспечивает поведение, эквивалентное поведению большинства интерпретаторов команд операционной системы или стандартной функции библиотеки C system().
Returns:
этот обработчик процессов
Since:
1.7

redirectErrorStream

public boolean redirectErrorStream()

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

Если это свойство равно true, то любой вывод ошибок, генерируемый подпроцессами, запущенными впоследствии методом этого объекта start(), будет объединен со стандартным выводом, так что оба могут быть прочитаны с помощью метода Process.getInputStream(). Это упрощает сопоставление сообщений об ошибках с соответствующим выводом. Начальное значение равно false.

Returns:
свойство redirectErrorStream этого обработчика процессов

redirectErrorStream

public ProcessBuilder redirectErrorStream(boolean redirectErrorStream)

Устанавливает свойство redirectErrorStream этого обработчика процессов.

Если это свойство равно true, то любой вывод ошибок, генерируемый подпроцессами, запущенными впоследствии методом этого объекта start(), будет объединен со стандартным выводом, так что оба могут быть прочитаны с помощью метода Process.getInputStream(). Это упрощает сопоставление сообщений об ошибках с соответствующим выводом. Начальное значение равно false.

Parameters:
redirectErrorStream - новое значение свойства
Returns:
этот обработчик процессов

start

public Process start()
              throws IOException

Запускает новый процесс, используя атрибуты этого обработчика процессов.

Новый процесс вызовет команду и аргументы, заданные в command(), в рабочей директории, заданной в directory(), с процессом окружения, заданным в environment().

Этот метод проверяет, является ли команда допустимой командой операционной системы. Какие команды допустимы, зависит от системы, но как минимум команда должна быть непустым списком непустых строк.

Для запуска процесса на некоторых операционных системах может потребоваться минимальный набор зависимых от системы переменных среды. В результате подпроцесс может унаследовать дополнительные настройки переменных среды, кроме тех, которые указаны в обработчике процессов в environment().

Если существует менеджер безопасности, его метод checkExec вызывается с первым компонентом массива этого объекта command в качестве аргумента. Это может привести к тому, что будет выброшено исключение SecurityException.

Запуск процесса операционной системы сильно зависит от системы. Среди многих возможных проблем:

  • Файл программы операционной системы не найден.
  • Доступ к файлу программы запрещен.
  • Рабочая директория не существует.
  • Неверный символ в аргументе команды, например, NUL.

В таких случаях будет выброшено исключение. Точный тип исключения зависит от системы, но это всегда будет подкласс IOException.

Если операционная система не поддерживает создание процессов, будет выброшено UnsupportedOperationException.

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

Returns:
новый объект Process для управления подпроцессом
Throws:
NullPointerException - если элемент списка команд равен null
IndexOutOfBoundsException - если команда является пустым списком (имеет размер 0)
SecurityException - если существует менеджер безопасности и
  • его метод checkExec не разрешает создание подпроцесса, или
  • стандартный ввод подпроцесса был перенаправлен из файла, и метод менеджера безопасности checkRead запрещает чтение файла, или
  • стандартный вывод или стандартная ошибка подпроцесса были перенаправлены в файл, и метод менеджера безопасности checkWrite запрещает запись в файл
UnsupportedOperationException - Если операционная система не поддерживает создание процессов.
IOException - если произошла ошибка ввода/вывода
See Also:
Runtime.exec(String[], String[], java.io.File)

startPipeline

public static List<Process> startPipeline(List<ProcessBuilder> builders)
                                   throws IOException

Запускает процесс для каждого ProcessBuilder, создавая конвейер процессов, соединённых потоками стандартного вывода и стандартного ввода. Атрибуты каждого ProcessBuilder используются для запуска соответствующего процесса, за исключением того, что при запуске каждого процесса стандартный вывод направляется в стандартный ввод следующего. Перенаправления стандартного ввода первого процесса и стандартного вывода последнего процесса инициализируются с использованием настроек перенаправления соответствующего ProcessBuilder. Все другие перенаправления ProcessBuilder должны быть Redirect.PIPE.

Все потоки ввода и вывода между промежуточными процессами недоступны. Поток standard input всех процессов, кроме первого, — это потоки вывода null. Поток standard output всех процессов, кроме последнего, — это потоки ввода null.

Свойство redirectErrorStream() каждого ProcessBuilder применяется к соответствующему процессу. Если оно установлено в true, то поток ошибок записывается в тот же поток, что и стандартный вывод.

Если при запуске любого из процессов возникает исключение, все процессы насильственно завершаются.

Метод startPipeline выполняет те же проверки для каждого ProcessBuilder, что и метод start(). Новый процесс вызовет команду и аргументы, заданные в command(), в рабочей директории, заданной в directory(), с процессом окружения, заданным в environment().

Этот метод проверяет, является ли команда допустимой командой операционной системы. Какие команды допустимы, зависит от системы, но как минимум команда должна быть непустым списком непустых строк.

Для запуска процесса на некоторых операционных системах может потребоваться минимальный набор зависимых от системы переменных среды. В результате подпроцесс может унаследовать дополнительные настройки переменных среды, кроме тех, которые указаны в обработчике процессов в environment().

Если существует менеджер безопасности, его метод checkExec вызывается с первым компонентом массива этого объекта command в качестве аргумента. Это может привести к тому, что будет выброшено исключение SecurityException.

Запуск процесса операционной системы сильно зависит от системы. Среди многих возможных проблем:

  • Файл программы операционной системы не найден.
  • Доступ к файлу программы запрещен.
  • Рабочая директория не существует.
  • Неверный символ в аргументе команды, например, NUL.

В таких случаях будет выброшено исключение. Точный тип исключения зависит от системы, но это всегда будет подкласс IOException.

Если операционная система не поддерживает создание процессов, будет выброшено UnsupportedOperationException.

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

Примечание API:
Например, для подсчета уникальных импортов для всех файлов в иерархии файлов на платформе, совместимой с Unix:
String directory = "/home/duke/src";
 ProcessBuilder[] builders = {
              new ProcessBuilder("find", directory, "-type", "f"),
                    new ProcessBuilder("xargs", "grep", "-h", "^import "),
                    new ProcessBuilder("awk", "{print $2;}"),
                    new ProcessBuilder("sort", "-u")};
 List<Process> processes = ProcessBuilder.startPipeline(
         Arrays.asList(builders));
 Process last = processes.get(processes.size()-1);
 try (InputStream is = last.getInputStream();
         Reader isr = new InputStreamReader(is);
         BufferedReader r = new BufferedReader(isr)) {
     long count = r.lines().count();
 }
Параметры:
builders - список ProcessBuilder
Возвращает:
список List<Process> процессов, запущенных из соответствующего ProcessBuilder
Исключение:
IllegalArgumentException - если любой из перенаправлений, кроме стандартного ввода первого билдера и стандартного вывода последнего билдера, не является ProcessBuilder.Redirect.PIPE.
NullPointerException - если элемент списка команд равен null, или элемент списка ProcessBuilder равен null, или аргумент builders равен null
IndexOutOfBoundsException - если команда является пустым списком (имеет размер 0)
SecurityException - если менеджер безопасности существует и
  • его метод checkExec не разрешает создание подпроцесса, или
  • стандартный ввод подпроцесса был перенаправлен из файла и метод менеджера безопасности checkRead запрещает чтение файла, или
  • стандартный вывод или стандартная ошибка подпроцесса были перенаправлены в файл и метод менеджера безопасности checkWrite запрещает запись в файл
UnsupportedOperationException - если операционная система не поддерживает создание процессов
IOException - если возникает ошибка ввода-вывода
С:
9

© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ProcessBuilder.html

Spec-Zone .ru
спецификации, руководства, описания, API