Spec-Zone.ru › Dart 2

dart:io

статический метод start

Future<Process> start(
  1. String executable,
  2. List<String> arguments,
  3. {String? workingDirectory,
  4. Map<String, String>? environment,
  5. bool includeParentEnvironment = true,
  6. bool runInShell = false,
  7. ProcessStartMode mode = ProcessStartMode.normal}
)

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

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

Используйте workingDirectory, чтобы задать рабочий каталог процесса. Обратите внимание, что на некоторых платформах смена каталога происходит до запуска процесса, что может повлиять на использование относительных путей для исполняемого файла и аргументов.

Используйте environment, чтобы задать переменные среды процесса. Если значение не задано, наследуется среда родительского процесса. В настоящее время поддерживаются только переменные среды US-ASCII; при передаче переменной среды с кодовыми точками за пределами диапазона US-ASCII вероятны ошибки.

Если includeParentEnvironment имеет значение true, среда процесса будет включать среду родительского процесса, причём environment имеет приоритет. По умолчанию — true.

Если runInShell имеет значение true, процесс будет запущен через системную оболочку. В Linux и OS X используется /bin/sh, а в Windows — %WINDIR%\system32\cmd.exe.

Пользователи должны считывать все данные из потоков stdout и stderr процессов, запущенных с помощью Process.start. Если пользователь не считывает все данные из потоков, системные ресурсы не будут освобождены, поскольку в них останутся ожидающие обработки данные.

В следующем примере кода Process.start используется для поиска main в файле test.dart в Linux.

var process = await Process.start('grep', ['-i', 'main', 'test.dart']);
stdout.addStream(process.stdout);
stderr.addStream(process.stderr);

Если mode имеет значение ProcessStartMode.normal (по умолчанию), дочерний процесс будет запущен с подключёнными stdin, stdout и stderr.

Если mode имеет значение ProcessStartMode.detached, будет создан отсоединённый процесс. Отсоединённый процесс не связан со своим родительским процессом и может продолжать работу самостоятельно после завершения родительского процесса. Единственная доступная информация об отсоединённом процессе — это его pid. Связь с его stdin, stdout или stderr отсутствует, а код завершения процесса не будет доступен после его завершения.

Если mode имеет значение ProcessStartMode.detachedWithStdio, будет создан отсоединённый процесс с подключёнными stdin, stdout и stderr. Создатель может взаимодействовать с дочерним процессом через эти потоки. Отсоединённый процесс продолжит работу, даже если эти каналы связи будут закрыты. Код завершения процесса не будет доступен после его завершения.

Значение по умолчанию для mode — ProcessStartMode.normal.

Реализация

external static Future<Process> start(
    String executable, List<String> arguments,
    {String? workingDirectory,
    Map<String, String>? environment,
    bool includeParentEnvironment = true,
    bool runInShell = false,
    ProcessStartMode mode = ProcessStartMode.normal});

© 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/start.html

Spec-Zone.ru

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