ProcessBuilder Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Этот класс используется для создания процессов операционной системы.
[Android.Runtime.Register("java/lang/ProcessBuilder", DoNotGenerateAcw=true)]
public sealed class ProcessBuilder : Java.Lang.Object
[<Android.Runtime.Register("java/lang/ProcessBuilder", DoNotGenerateAcw=true)>]
type ProcessBuilder = class
inherit Object
- Наследование
- Атрибуты
Комментарии
Этот класс используется для создания процессов операционной системы.
Каждый ProcessBuilder экземпляр управляет коллекцией атрибутов процесса. Метод #start() создает новый Process экземпляр с этими атрибутами. Метод #start() можно вызывать многократно из одного экземпляра, чтобы создать новые подпроцессы с идентичными или связанными атрибутами.
Каждый построитель процессов управляет этими атрибутами процесса:
<Ул>
<li>команда, список строк, которые указывают на вызов внешнего файла программы и его аргументы, если таковые есть. Какие списки строк представляют допустимую команду операционной системы, зависит от системы. Например, каждый концептуальный аргумент является элементом в этом списке, но существуют операционные системы, в которых программы, как ожидается, будут маркеризировать строки командной строки сами. В такой системе реализация Java может потребоваться, чтобы команды содержали ровно два элемента.
<li>среда, которая является системным сопоставлением от переменных к значениям. Начальное значение — это копия среды текущего процесса (см. ).System#getenv()
<li>рабочий каталог. Значение по умолчанию — текущий рабочий каталог текущего процесса, обычно каталог с именем системного свойства user.dir.
<li>"redirect-input">источник <i>standard input</i>. По умолчанию подпроцесс считывает входные данные из канала. Java код может получить доступ к этому каналу через выходной поток, возвращенный Process#getOutputStream(). Однако стандартные входные данные могут быть перенаправлены в другой источник с помощью #redirectInput(Redirect) redirectInput. В этом случае Process#getOutputStream() возвращается выходной поток NULL, для которого:
<ul><li>OutputStream#write(int) write методы всегда бросают IOException<li>OutputStream#close() close метод не делает ничего </ul>
<li>"redirect-output">a destination for <i>standard output</i and >i<standard error>/i<>. По умолчанию подпроцесс записывает стандартные выходные данные и стандартную ошибку в каналы. Java код может получить доступ к этим каналам через входные потоки, возвращаемые Process#getInputStream() и Process#getErrorStream(). Однако стандартные выходные данные и стандартная ошибка могут быть перенаправлены в другие назначения с помощью #redirectOutput(Redirect) redirectOutput и #redirectError(Redirect) redirectError. В этом случае Process#getInputStream() и (или) Process#getErrorStream() возвращает входной поток null, для которого:
<ul><li >InputStream#read() readметоды всегда возвращают -1<li метод всегда возвращает>InputStream#available() available li0<>InputStream#close() close, метод ничего не <делает /ul>
<li>свойство redirectErrorStream . Изначально это свойство означает false, что стандартные выходные данные и выходные данные ошибок подпроцесса отправляются в два отдельных потока, к которым можно получить доступ с помощью Process#getInputStream() методов и Process#getErrorStream() методов.
Если для параметра задано trueзначение, выполните следующие действия.
<Стандартная ошибка ul>li объединяется со стандартными выходными данными и всегда отправляется в то же место назначения (это упрощает сопоставление сообщений об ошибках с соответствующими выходными данными) <ли>общее назначение стандартной ошибки и стандартных выходных данных можно перенаправить с помощью<> ли любой перенаправления, заданной #redirectOutput(Redirect) redirectOutput методом, игнорируется при создании потока подпроцесса<,>#redirectError(Redirect) redirectErrorвозвращаемого потоком<, возвращаемым из него, всегда будет пустым входным потоком>/ul.Process#getErrorStream()<>
</ul>
Изменение атрибутов построителя процессов повлияет на процессы, которые впоследствии запускаются методом этого объекта#start(), но никогда не повлияют на ранее запущенные процессы или сам процесс Java.
Большинство проверок ошибок выполняется методом #start() . Можно изменить состояние объекта, чтобы завершиться #start() ошибкой. Например, установка атрибута команды в пустой список не приведет к возникновению исключения, если #start() не вызывается.
<Strong>Обратите внимание, что этот класс не синхронизирован.</strong> , если несколько потоков одновременно обращаются к ProcessBuilder экземпляру, а по крайней мере один из потоков изменяет один из атрибутов структурно, он должен быть синхронизирован внешне.
Запуск нового процесса, использующего рабочий каталог по умолчанию и среду, прост:
{@code
Process p = new ProcessBuilder("myCommand", "myArg").start();
}
Ниже приведен пример, который запускает процесс с измененным рабочим каталогом и средой, а также перенаправляет стандартные выходные данные и ошибки, добавляемые в файл журнала:
{@code
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;
}
Чтобы запустить процесс с явным набором переменных среды, сначала вызовите java.util.Map#clear() Map.clear() перед добавлением переменных среды.
Добавлено в версии 1.5.
Java документации по java.lang.ProcessBuilder.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".
Конструкторы
| Имя. | Описание |
|---|---|
| ProcessBuilder(IList<String>) |
Создает построитель процессов с указанными программами и аргументами операционной системы. |
| ProcessBuilder(String[]) |
Создает построитель процессов с указанными программами и аргументами операционной системы. |
Свойства
| Имя. | Описание |
|---|---|
| Class |
Возвращает класс среды выполнения этого |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| JniIdentityHashCode |
Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия. (Унаследовано от Object) |
| JniManagedPeerState |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| JniPeerMembers |
Возвращает метаданные JNI, используемые для вызова элементов этого Java однорангового узла. |
| PeerReference |
Возвращает ссылку на объект JNI для этого Java однорангового узла. (Унаследовано от Object) |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. (Унаследовано от Object) |
Методы
| Имя. | Описание |
|---|---|
| Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
| Command() |
Возвращает эту программу и аргументы операционной системы построителя процессов. |
| Command(IList<String>) |
Задает программу и аргументы операционной системы построителя процессов. |
| Command(String[]) |
Возвращает эту программу и аргументы операционной системы построителя процессов. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| Directory() |
Возвращает рабочий каталог построителя процессов. |
| Directory(File) |
Задает рабочий каталог построителя процессов. |
| Dispose() |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| Dispose(Boolean) |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| DisposeUnlessReferenced() |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| Environment() |
Возвращает представление схемы строк для среды построителя процессов. |
| Equals(Object) |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
| GetHashCode() |
Возвращает хэш-значение кода для объекта. (Унаследовано от Object) |
| InheritIO() |
Задает источник и назначение для стандартного ввода-вывода субпроцесса, совпадающего с текущим процессом Java. |
| JavaFinalize() |
Устаревшие.
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
| Notify() |
Просыпается один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
| NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
| RedirectError() |
Возвращает стандартное назначение ошибки построителя процессов. |
| RedirectError(File) |
Задает стандартное назначение ошибки построителя процессов в файл. |
| RedirectError(ProcessBuilder+Redirect) |
Задает стандартное назначение ошибки построителя процессов. |
| RedirectErrorStream() |
Указывает, объединяет ли этот построитель процессов стандартные ошибки и стандартные выходные данные. |
| RedirectErrorStream(Boolean) |
Задает свойство построителя |
| RedirectInput() |
Возвращает стандартный источник входных данных построителя процессов. |
| RedirectInput(File) |
Задает стандартный источник входных данных этого построителя процессов в файл. |
| RedirectInput(ProcessBuilder+Redirect) |
Задает стандартный источник входных данных этого построителя процессов. |
| RedirectOutput() |
Возвращает стандартное назначение выходных данных построителя процессов. |
| RedirectOutput(File) |
Задает стандартное назначение выходных данных этого построителя процессов в файл. |
| RedirectOutput(ProcessBuilder+Redirect) |
Задает стандартное назначение выходных данных построителя процессов. |
| SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| Start() |
Запускает новый процесс с помощью атрибутов этого построителя процессов. |
| ToArray<T>() |
Создает управляемый массив из этого Java оболочки массива. (Унаследовано от Object) |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия. (Унаследовано от Object) |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.> (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя. | Описание |
|---|---|
| IJavaPeerable.Disposed() |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| IJavaPeerable.Finalized() |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Этот класс используется для создания процессов операционной системы. (Унаследовано от JavaObject) |
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Этот класс используется для создания процессов операционной системы. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |