Spec-Zone.ru › Dart 1

dart:io

Процесс абстрактный класс

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

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

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

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

import 'dart:io';

main() {
  // List all files in the current directory in UNIX-like systems.
  Process.run('ls', ['-l']).then((ProcessResult results) {
    print(results.stdout);
  });
}

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

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

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

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

main() {
  Process.start('cat', []).then((Process process) {
    process.stdout
        .transform(UTF8.decoder)
        .listen((data) { print(data); });
    process.stdin.writeln('Hello, world!');
    process.stdin.writeln('Hello, galaxy!');
    process.stdin.writeln('Hello, universe!');
  });
}

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

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

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

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

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

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

import 'dart:io';

main() {
  Process.start('ls', ['-l']).then((process) {
    // Get the exit code from the new process.
    process.exitCode.then((exitCode) {
      print('exit code: $exitCode');
    });
  });
}

Другие ресурсы

Dart by Example предоставляет дополнительные примеры кода, ориентированные на задачи, показывающие, как использовать различные API из библиотеки dart:io.

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

killPid(int pid, [ ProcessSignal signal = ProcessSignal.SIGTERM ]) → bool

Убивает процесс с id pid.

run(String executable, List<String> arguments, { String workingDirectory, Map<String, String> environment, bool includeParentEnvironment: true, bool runInShell: false, Encoding stdoutEncoding: SYSTEM_ENCODING, Encoding stderrEncoding: SYSTEM_ENCODING }) → Future<ProcessResult>

Запускает процесс и выполняет его без взаимодействия до завершения. Запуск процесса executable со следующими arguments.

runSync(String executable, List<String> arguments, { String workingDirectory, Map<String, String> environment, bool includeParentEnvironment: true, bool runInShell: false, Encoding stdoutEncoding: SYSTEM_ENCODING, Encoding stderrEncoding: SYSTEM_ENCODING }) → 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. Возвращает Future<Process>, который завершается экземпляром Process, когда процесс успешно запущен. Этот объект Process может использоваться для взаимодействия с процессом. Если процесс нельзя запустить, возвращаемый Future завершается исключением.

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

Process()

Свойства

exitCode → Future<int>
только для чтения

Возвращает Future, который завершается кодом завершения процесса, когда процесс завершается.

pid → int
только для чтения

Возвращает идентификатор процесса процесса.

stderr → Stream<List<int>>
только для чтения

Возвращает поток стандартных ошибок процесса в виде Stream.

stdin → IOSink
только для чтения

Возвращает поток стандартного ввода процесса в виде IOSink.

stdout → Stream<List<int>>
только для чтения

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

hashCode → int
только для чтения, унаследованное

Хэш-код этого объекта.

runtimeType → Type
только для чтения, унаследованное

Представление типа во время выполнения объекта.

Операторы

operator ==(other) → bool
унаследованное

Оператор равенства.

Методы

kill([ProcessSignal signal = ProcessSignal.SIGTERM ]) → bool

Убивает процесс.

noSuchMethod(Invocation invocation) → dynamic
унаследованное

Вызывается при доступе к несуществующему методу или свойству.

toString() → String
унаследованное

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

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/Process-class.html

Spec-Zone.ru

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