Spec-Zone.ru › Dart 2

dart:io

Класс Process

Средство для выполнения программы.

Используйте статические методы start и run, чтобы запустить новый процесс. Метод run выполняет процесс без взаимодействия до его завершения. В отличие от него, метод start позволяет вашему коду взаимодействовать с выполняющимся процессом.

Запуск процесса с помощью метода run

В следующем примере кода метод run используется для создания процесса, выполняющего команду UNIX ls, которая выводит содержимое каталога. По завершении процесса метод run возвращает объект ProcessResult. Он предоставляет доступ к выводу процесса и коду завершения. Метод run не возвращает объект Process; благодаря этому ваш код не может взаимодействовать с выполняющимся процессом.

import 'dart:io';

main() async {
  // List all files in the current directory in UNIX-like systems.
  var result = await Process.run('ls', ['-l']);
  print(result.stdout);
}

Запуск процесса с помощью метода start

В следующем примере метод start используется для создания процесса. Метод start возвращает Future для объекта Process. Когда Future завершается, процесс запускается, и ваш код может взаимодействовать с ним: записывать данные в stdin, прослушивать stdout и так далее.

В следующем примере запускается утилита UNIX cat, которая при отсутствии аргументов командной строки выводит полученные данные. Программа записывает данные в стандартный поток ввода процесса и выводит данные из его стандартного потока вывода.

import 'dart:io';
import 'dart:convert';

main() async {
  var process = await Process.start('cat', []);
  process.stdout
      .transform(utf8.decoder)
      .forEach(print);
  process.stdin.writeln('Hello, world!');
  process.stdin.writeln('Hello, galaxy!');
  process.stdin.writeln('Hello, universe!');
}

Стандартные потоки ввода-вывода

Как видно из предыдущего примера кода, вы можете взаимодействовать со стандартным потоком вывода Process с помощью геттера stdout, а со стандартным потоком ввода Process — с помощью геттера stdin. Кроме того, Process предоставляет геттер stderr для работы со стандартным потоком ошибок Process.

Потоки Process отличаются от потоков верхнего уровня текущей программы.

Коды завершения

Вызовите метод exitCode, чтобы получить код завершения процесса. Код завершения указывает, завершилась ли программа успешно (обычно об этом свидетельствует код завершения 0) или с ошибкой.

Если используется метод start, значение exitCode доступно через Future объекта Process (как показано в примере ниже). Если используется метод run, значение exitCode доступно через геттер экземпляра ProcessResult.

import 'dart:io';

main() async {
  var process = await Process.start('ls', ['-l']);
  var exitCode = await process.exitCode;
  print('exit code: $exitCode');
}

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

Process()

Свойства

exitCode → Future<int>
только для чтения
Future, который завершается с кодом завершения процесса после его завершения.
hashCode → int
только для чтенияунаследовано
Хеш-код этого объекта.
pid → int
только для чтения
Идентификатор процесса.
runtimeType → Type
только для чтенияунаследовано
Представление типа объекта во время выполнения.
stderr → Stream<List<int>>
только для чтения
Стандартный поток ошибок процесса в виде Stream.
stdin → IOSink
только для чтения
Стандартный поток ввода процесса в виде IOSink.
stdout → Stream<List<int>>
только для чтения
Стандартный поток вывода процесса в виде Stream.

Методы

kill([ProcessSignal signal = ProcessSignal.sigterm]) → bool
Завершает процесс.
noSuchMethod(Invocation invocation) → dynamic
унаследовано
Вызывается при обращении к несуществующему методу или свойству.
toString() → String
унаследовано
Строковое представление этого объекта.

Операторы

operator ==(Object other) → bool
унаследовано
Оператор равенства.

Статические методы

killPid(int pid, [ProcessSignal signal = ProcessSignal.sigterm]) → bool
Завершает процесс с идентификатором pid.
run(String executable, List<String> arguments, {String? workingDirectory, Map<String, String>? environment, bool includeParentEnvironment = true, bool runInShell = false, Encoding? stdoutEncoding = systemEncoding, Encoding? stderrEncoding = systemEncoding}) → Future<ProcessResult>
Запускает процесс и выполняет его без взаимодействия до завершения. Процесс запускается executable с указанными arguments.
runSync(String executable, List<String> arguments, {String? workingDirectory, Map<String, String>? environment, bool includeParentEnvironment = true, bool runInShell = false, Encoding? stdoutEncoding = systemEncoding, Encoding? stderrEncoding = systemEncoding}) → ProcessResult
Запускает процесс и выполняет его до завершения. Это синхронный вызов, который блокирует выполнение до завершения дочернего процесса.
start(String executable, List<String> arguments, {String? workingDirectory, Map<String, String>? environment, bool includeParentEnvironment = true, bool runInShell = false, ProcessStartMode mode = ProcessStartMode.normal}) → Future<Process>
Запускает процесс, выполняющий executable с указанными arguments.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/Process-class.html

Spec-Zone.ru

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